singlese7en преди 2 години
родител
ревизия
382cfc0973

+ 2 - 0
IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADTHandler.cs

@@ -19,6 +19,8 @@ namespace MediII.Adapter.BizComponent.ADT
     public abstract class ADTHandler
     {
         static readonly string SEDING_APPLICATION = System.Configuration.ConfigurationManager.AppSettings["SedingApplication"];
+        protected string index = System.Configuration.ConfigurationManager.AppSettings["PageIndex"];
+        protected string size = System.Configuration.ConfigurationManager.AppSettings["PageSize"];
         //数据库连接
         protected Database ctx;
         protected Database Scanctx;

+ 33 - 29
IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADT_A01B01_Handler.cs

@@ -36,17 +36,18 @@ namespace MediII.Adapter.BizComponent.ADT
             //string visitNo = xmlHelper.XpathRead(m, "//*[@root='2.16.156.10011.2.5.1.9']", "extension");
             string visitNo = m;
             //拼接接口访问参数
-            msgBody = xmlHelper.GetMsgBody(visitNo);
+            msgBody = xmlHelper.GetMsgBody(visitNo, "patient_zyh",index,size);
             msgHead = xmlHelper.GetMsgHead("getInHospitalInfo", cert);
             //接口访问
             rtnMsg = server.TestInterface(msgHead, msgBody);
-
+   
             //存储访问记录
             MessageHelper.SaveSendMsg(Scanctx, ID, "ADT^A01[B01]", msgHead, msgBody, rtnMsg);
+
             //消息判断是否成功
             if (!xmlHelper.isSuccess(rtnMsg, ref resultCode, ref result))
             {
-                throw new Exception(result);
+                throw new Exception("判断失败:"+result);
             }
 
             //更新发送表,保存留档
@@ -54,7 +55,7 @@ namespace MediII.Adapter.BizComponent.ADT
             //返回数据解析
             XmlNode root = xmlHelper.GetContentRootNode(rtnMsg);
             //是否出院
-            string CheckOutDate = root.SelectSingleNode("//*[name()='CY_DATE']").InnerText;
+            string CheckOutDate = root.SelectSingleNode("//*[name()='cy_date']").InnerText;//CY_DATE
 
             if (!string.IsNullOrWhiteSpace(CheckOutDate))
             {
@@ -76,7 +77,7 @@ namespace MediII.Adapter.BizComponent.ADT
                 return;
             }
             //入院日期
-            string CheckInDate = root.SelectSingleNode("//*[name()='RY_DATE']").InnerText;
+            string CheckInDate = root.SelectSingleNode("//*[name()='ry_date']").InnerText;
             XmlNodeList list = root.SelectNodes("//returnContents//returnContent");
             /* 获取档案,如果存在出院日,再判断是否有相关消息任务进行中,如有,则不操作,如果没有,插入任务,同时更新档案
                Todo:
@@ -93,7 +94,7 @@ namespace MediII.Adapter.BizComponent.ADT
             {
                 if (num <= 0)
                 {
-                    var ifsql = @"insert into dbo.zhuyuan_original(patient_zyh,patient_id,RY_DATE,RY_UNIT,RY_BQ,RY_BED,CY_DATE,CY_UNIT,CY_BQ,age,patient_name,Sex,address,JG_DOCT_GH,SZ_DOCT_GH,Nurse_grade,ICD_CODE_RY1,ICD_CODE_RY2,ICD_CODE_RY3,ICD_CODE_RY4,ICD_CODE_CY1,ICD_CODE_CY2,ICD_CODE_CY3,ICD_CODE_CY4,CY_Kind) Values(
+                    var ifsql = @"insert into dbo.zhuyuan_original(patient_zyh,patient_id,RY_DATE,RY_UNIT,RY_BQ,RY_BED,CY_DATE,CY_UNIT,CY_BQ,age,name,Sex,address,JG_DOCT_GH,SZ_DOCT_GH,Nurse_grade,ICD_CODE_RY1,ICD_CODE_RY2,ICD_CODE_RY3,ICD_CODE_RY4,ICD_CODE_CY1,ICD_CODE_CY2,ICD_CODE_CY3,ICD_CODE_CY4,CY_Kind) Values(
 @patient_zyh,@patient_id,@RY_DATE,@RY_UNIT,@RY_BQ,@RY_BED,@CY_DATE,@CY_UNIT,@CY_BQ,@age,@patient_name,@Sex,@address,@JG_DOCT_GH,@SZ_DOCT_GH,@Nurse_grade,@ICD_CODE_RY1,@ICD_CODE_RY2,@ICD_CODE_RY3,@ICD_CODE_RY4,@ICD_CODE_CY1,@ICD_CODE_CY2,@ICD_CODE_CY3,@ICD_CODE_CY4,@CY_Kind)";
                     //住院患者基本档
                     foreach (XmlElement xn in list)
@@ -113,7 +114,7 @@ CY_DATE=@CY_DATE,
 CY_UNIT=@CY_UNIT,
 CY_BQ=@CY_BQ,
 age=@age,
-patient_name=@patient_name,
+name=@patient_name,
 Sex=@Sex,
 address=@address,
 JG_DOCT_GH=@JG_DOCT_GH,
@@ -135,7 +136,10 @@ CY_Kind=@CY_Kind where patient_zyh=@patient_zyh and patient_id=@patient_id";
                         SqlDataAccess.ExecuteNonQuery(ctx, ucmd);
                     }
                 }
-
+                scope.Complete();
+            }
+            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
+            {
                 var sql = @"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[B02]") <= 0)
@@ -232,29 +236,29 @@ CY_Kind=@CY_Kind where patient_zyh=@patient_zyh and patient_id=@patient_id";
         {
             SqlDataAccess.AddInParameter(Scanctx, icmd, "patient_zyh", DbType.AnsiString, xn.SelectSingleNode("patient_zyh").InnerText);
             SqlDataAccess.AddInParameter(Scanctx, icmd, "patient_id", DbType.AnsiString, xn.SelectSingleNode("patient_id").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "RY_DATE", DbType.AnsiString, xn.SelectSingleNode("RY_DATE").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "RY_UNIT", DbType.AnsiString, xn.SelectSingleNode("RY_UNIT").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "RY_BQ", DbType.AnsiString, xn.SelectSingleNode("RY_BQ").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "RY_BED", DbType.AnsiString, xn.SelectSingleNode("RY_BED").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "CY_DATE", DbType.AnsiString, xn.SelectSingleNode("CY_DATE").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "CY_UNIT", DbType.AnsiString, xn.SelectSingleNode("CY_UNIT").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "CY_BQ", DbType.AnsiString, xn.SelectSingleNode("CY_BQ").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "age", DbType.AnsiString, xn.SelectSingleNode("age").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "RY_DATE", DbType.AnsiString, xn.SelectSingleNode("ry_date").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "RY_UNIT", DbType.AnsiString, xn.SelectSingleNode("ry_unit").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "RY_BQ", DbType.AnsiString, xn.SelectSingleNode("ry_bq").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "RY_BED", DbType.AnsiString, xn.SelectSingleNode("ry_bed").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "CY_DATE", DbType.AnsiString, xn.SelectSingleNode("cy_date").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "CY_UNIT", DbType.AnsiString, xn.SelectSingleNode("cy_unit").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "CY_BQ", DbType.AnsiString, xn.SelectSingleNode("cy_bq").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "age", DbType.Int32, xn.SelectSingleNode("age").InnerText);
             SqlDataAccess.AddInParameter(Scanctx, icmd, "patient_name", DbType.AnsiString, xn.SelectSingleNode("patient_name").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "Sex", DbType.AnsiString, xn.SelectSingleNode("Sex").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "Sex", DbType.AnsiString, xn.SelectSingleNode("sex").InnerText);
             SqlDataAccess.AddInParameter(Scanctx, icmd, "address", DbType.AnsiString, xn.SelectSingleNode("address").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "JG_DOCT_GH", DbType.AnsiString, xn.SelectSingleNode("JG_DOCT_GH").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "SZ_DOCT_GH", DbType.AnsiString, xn.SelectSingleNode("SZ_DOCT_GH").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "Nurse_grade", DbType.AnsiString, xn.SelectSingleNode("Nurse_grade").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_RY1", DbType.AnsiString, xn.SelectSingleNode("ICD_CODE_RY1").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_RY2", DbType.AnsiString, xn.SelectSingleNode("ICD_CODE_RY2").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_RY3", DbType.AnsiString, xn.SelectSingleNode("ICD_CODE_RY3").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_RY4", DbType.AnsiString, xn.SelectSingleNode("ICD_CODE_RY4").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_CY1", DbType.AnsiString, xn.SelectSingleNode("ICD_CODE_CY1").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_CY2", DbType.AnsiString, xn.SelectSingleNode("ICD_CODE_CY2").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_CY3", DbType.AnsiString, xn.SelectSingleNode("ICD_CODE_CY3").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_CY4", DbType.AnsiString, xn.SelectSingleNode("ICD_CODE_CY4").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "CY_Kind", DbType.AnsiString, xn.SelectSingleNode("CY_Kind").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "JG_DOCT_GH", DbType.AnsiString, xn.SelectSingleNode("jg_doct_gh").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "SZ_DOCT_GH", DbType.AnsiString, xn.SelectSingleNode("sz_doct_gh").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "Nurse_grade", DbType.AnsiString, xn.SelectSingleNode("nurse_grade").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_RY1", DbType.AnsiString, xn.SelectSingleNode("icd_code_ry1").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_RY2", DbType.AnsiString, xn.SelectSingleNode("icd_code_ry2").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_RY3", DbType.AnsiString, xn.SelectSingleNode("icd_code_ry3").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_RY4", DbType.AnsiString, xn.SelectSingleNode("icd_code_ry4").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_CY1", DbType.AnsiString, xn.SelectSingleNode("icd_code_cy1").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_CY2", DbType.AnsiString, xn.SelectSingleNode("icd_code_cy2").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_CY3", DbType.AnsiString, xn.SelectSingleNode("icd_code_cy3").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_CY4", DbType.AnsiString, xn.SelectSingleNode("icd_code_cy4").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "CY_Kind", DbType.AnsiString, xn.SelectSingleNode("cy_kind").InnerText);
         }
 
         private int GetInHospInfoCount(string VisitNo)

+ 45 - 4
IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADT_A01B02_Handler.cs

@@ -31,11 +31,14 @@ namespace MediII.Adapter.BizComponent.ADT
             OperateXmlUtil xmlHelper = new OperateXmlUtil();
             //读取配置的凭证号
             var cert = System.Configuration.ConfigurationManager.AppSettings["cert"];
+
+            var index = System.Configuration.ConfigurationManager.AppSettings["PageIndex"];
+            var size = System.Configuration.ConfigurationManager.AppSettings["PageSize"];
             //读取就诊流水号
             //string visitNo = xmlHelper.XpathRead(m, "//*[@root='2.16.156.10011.2.5.1.9']", "extension");
             string visitNo = m;
             //拼接接口访问参数
-            msgBody = xmlHelper.GetMsgBody(visitNo);
+            msgBody = xmlHelper.GetMsgBody(visitNo, "id", index, size);
             msgHead = xmlHelper.GetMsgHead("getInHospPresc", cert);
             //接口访问
             rtnMsg = server.TestInterface(msgHead, msgBody);
@@ -67,18 +70,56 @@ namespace MediII.Adapter.BizComponent.ADT
                 var osql = @"insert into dbo.zhuyuan_medical_order(id,medical_order_id,fee_date,yfdm,yfmc,cflx,cfje,cfdzs,yjts,kdksdm,kdys) VALUES(
 @id,@medical_order_id,@fee_date,@yfdm,@yfmc,@cflx,@cfje,@cfdzs,@yjts,@kdksdm,@kdys );";
 
+                decimal cfje = 0;
+                DateTime feedate;
+                decimal yjts = 0;
                 foreach (XmlElement xn in list)
                 {
                     var dcmd = ctx.DBGetSqlStringCommand(osql);
                     ctx.AddInParameter(dcmd, "id", System.Data.DbType.String, xn.SelectSingleNode("id").InnerText);
                     ctx.AddInParameter(dcmd, "medical_order_id", System.Data.DbType.String, xn.SelectSingleNode("medical_order_id").InnerText);
-                    ctx.AddInParameter(dcmd, "fee_date", System.Data.DbType.DateTime, xn.SelectSingleNode("fee_date").InnerText);
+
+                    try
+                    {
+                        if (DateTime.TryParse(xn.SelectSingleNode("fee_date").InnerText, out feedate))
+                        {
+                            ctx.AddInParameter(dcmd, "fee_date", System.Data.DbType.DateTime, feedate);
+                        }
+                        else
+                        {
+                            continue;
+                        }
+                    }
+                    catch
+                    {
+                        continue;
+                    }
+                    
                     ctx.AddInParameter(dcmd, "yfdm", System.Data.DbType.String, xn.SelectSingleNode("yfdm").InnerText);
                     ctx.AddInParameter(dcmd, "yfmc", System.Data.DbType.String, xn.SelectSingleNode("yfmc").InnerText);
                     ctx.AddInParameter(dcmd, "cflx", System.Data.DbType.String, xn.SelectSingleNode("cflx").InnerText);
-                    ctx.AddInParameter(dcmd, "cfje", System.Data.DbType.String, xn.SelectSingleNode("cfje").InnerText);
+                   
+                    try
+                    {
+                        decimal.TryParse(xn.SelectSingleNode("cfje").InnerText, out cfje);
+
+                    }
+                    catch
+                    {
+
+                    }
+                    ctx.AddInParameter(dcmd, "cfje", System.Data.DbType.Decimal, cfje);
                     ctx.AddInParameter(dcmd, "cfdzs", System.Data.DbType.String, xn.SelectSingleNode("cfdzs").InnerText);
-                    ctx.AddInParameter(dcmd, "yjts", System.Data.DbType.String, xn.SelectSingleNode("yjts").InnerText);
+                    
+                    try{
+                        decimal.TryParse(xn.SelectSingleNode("yjts").InnerText, out yjts);
+                        
+                    }catch{
+
+                    }
+                    
+                    ctx.AddInParameter(dcmd, "yjts", System.Data.DbType.Decimal, yjts);
+                    
                     ctx.AddInParameter(dcmd, "kdksdm", System.Data.DbType.String, xn.SelectSingleNode("kdksdm").InnerText);
                     ctx.AddInParameter(dcmd, "kdys", System.Data.DbType.String, xn.SelectSingleNode("kdys").InnerText);
                     ctx.DBExecuteNonQuery(dcmd);//

+ 25 - 5
IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADT_A01B03_Handler.cs

@@ -35,7 +35,7 @@ namespace MediII.Adapter.BizComponent.ADT
             //string visitNo = xmlHelper.XpathRead(m, "//*[@root='2.16.156.10011.2.5.1.9']", "extension");
             string visitNo = m;
             //拼接接口访问参数
-            msgBody = xmlHelper.GetMsgBody(visitNo);
+            msgBody = xmlHelper.GetMsgBody(visitNo, "patient_zyh",index,size);
             msgHead = xmlHelper.GetMsgHead("getInHospCostDetail", cert);
             //接口访问
             rtnMsg = server.TestInterface(msgHead, msgBody);
@@ -71,7 +71,7 @@ namespace MediII.Adapter.BizComponent.ADT
                 foreach (XmlElement xn in list)
                 {
                     var dcmd = ctx.DBGetSqlStringCommand(fsql);
-                    ctx.AddInParameter(dcmd, "patient_zyh", System.Data.DbType.String, xn.SelectSingleNode("mz_id").InnerText);
+                    ctx.AddInParameter(dcmd, "patient_zyh", System.Data.DbType.String, xn.SelectSingleNode("patient_zyh").InnerText);
                     ctx.AddInParameter(dcmd, "patient_id", System.Data.DbType.String, xn.SelectSingleNode("patient_id").InnerText);
                     ctx.AddInParameter(dcmd, "fee_date", System.Data.DbType.DateTime, xn.SelectSingleNode("fee_date").InnerText);
                     ctx.AddInParameter(dcmd, "order_unit_id", System.Data.DbType.String, xn.SelectSingleNode("order_unit_id").InnerText);
@@ -86,9 +86,29 @@ namespace MediII.Adapter.BizComponent.ADT
                     ctx.AddInParameter(dcmd, "fee_type_name", System.Data.DbType.String, xn.SelectSingleNode("fee_type_name").InnerText);
                     ctx.AddInParameter(dcmd, "item_id", System.Data.DbType.String, xn.SelectSingleNode("item_id").InnerText);
                     ctx.AddInParameter(dcmd, "item_name", System.Data.DbType.String, xn.SelectSingleNode("item_name").InnerText);
-                    ctx.AddInParameter(dcmd, "item_quantity", System.Data.DbType.String, xn.SelectSingleNode("item_quantity").InnerText);
-                    ctx.AddInParameter(dcmd, "price", System.Data.DbType.String, xn.SelectSingleNode("price").InnerText);
-                    ctx.AddInParameter(dcmd, "fee", System.Data.DbType.String, xn.SelectSingleNode("fee").InnerText);
+                    decimal item_quantity = 0;
+                    try
+                    {
+                        decimal.TryParse(xn.SelectSingleNode("item_quantity").InnerText, out item_quantity);
+
+                    }
+                    catch
+                    {
+
+                    }
+                    ctx.AddInParameter(dcmd, "item_quantity", System.Data.DbType.Decimal, item_quantity);
+                    decimal price = 0;
+                    try
+                    {
+                        decimal.TryParse(xn.SelectSingleNode("price").InnerText, out price);
+
+                    }
+                    catch
+                    {
+
+                    }
+                    ctx.AddInParameter(dcmd, "price", System.Data.DbType.Decimal, price);
+                    ctx.AddInParameter(dcmd, "fee", System.Data.DbType.Decimal, xn.SelectSingleNode("fee").InnerText);
                     ctx.DBExecuteNonQuery(dcmd);//
                 }
                 scope.Complete(); 

+ 8 - 5
IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADT_A01B04_Handler.cs

@@ -31,11 +31,14 @@ namespace MediII.Adapter.BizComponent.ADT
             OperateXmlUtil xmlHelper = new OperateXmlUtil();
             //读取配置的凭证号
             var cert = System.Configuration.ConfigurationManager.AppSettings["cert"];
+
+            var index = System.Configuration.ConfigurationManager.AppSettings["PageIndex"];
+            var size = System.Configuration.ConfigurationManager.AppSettings["PageSize"];
             //读取就诊流水号
             //string visitNo = xmlHelper.XpathRead(m, "//*[@root='2.16.156.10011.2.5.1.9']", "extension");
             string visitNo = m;
             //拼接接口访问参数
-            msgBody = xmlHelper.GetMsgBody(visitNo);
+            msgBody = xmlHelper.GetMsgBody(visitNo, "patient_zyh", index, size);
             msgHead = xmlHelper.GetMsgHead("getTransInfo", cert);
             //接口访问
             rtnMsg = server.TestInterface(msgHead, msgBody);
@@ -73,10 +76,10 @@ namespace MediII.Adapter.BizComponent.ADT
                     var dcmd = ctx.DBGetSqlStringCommand(fsql);
                     ctx.AddInParameter(dcmd, "patient_zyh", System.Data.DbType.String, xn.SelectSingleNode("patient_zyh").InnerText);
                     ctx.AddInParameter(dcmd, "patient_id", System.Data.DbType.String, xn.SelectSingleNode("patient_id").InnerText);
-                    ctx.AddInParameter(dcmd, "TRANS_DATE", System.Data.DbType.DateTime, xn.SelectSingleNode("TRANS_DATE").InnerText);
-                    ctx.AddInParameter(dcmd, "TRANS_UNIT", System.Data.DbType.String, xn.SelectSingleNode("TRANS_UNIT").InnerText);
-                    ctx.AddInParameter(dcmd, "TRANS_BQ", System.Data.DbType.String, xn.SelectSingleNode("TRANS_BQ").InnerText);
-                    ctx.AddInParameter(dcmd, "TRANS_BED", System.Data.DbType.String, xn.SelectSingleNode("TRANS_BED").InnerText);
+                    ctx.AddInParameter(dcmd, "TRANS_DATE", System.Data.DbType.DateTime, xn.SelectSingleNode("trans_date").InnerText);
+                    ctx.AddInParameter(dcmd, "TRANS_UNIT", System.Data.DbType.String, xn.SelectSingleNode("trans_unit").InnerText);
+                    ctx.AddInParameter(dcmd, "TRANS_BQ", System.Data.DbType.String, xn.SelectSingleNode("trans_bq").InnerText);
+                    ctx.AddInParameter(dcmd, "TRANS_BED", System.Data.DbType.String, xn.SelectSingleNode("trans_bed").InnerText);
                     ctx.AddInParameter(dcmd, "zk_UNIT", System.Data.DbType.String, xn.SelectSingleNode("zk_UNIT").InnerText);
                     ctx.AddInParameter(dcmd, "zk_BQ", System.Data.DbType.String, xn.SelectSingleNode("zk_BQ").InnerText);
                     ctx.AddInParameter(dcmd, "zk_BED", System.Data.DbType.String, xn.SelectSingleNode("zk_BED").InnerText);

+ 30 - 26
IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADT_A02B01_Handler.cs

@@ -36,7 +36,7 @@ namespace MediII.Adapter.BizComponent.ADT
             //string visitNo = xmlHelper.XpathRead(m, "//*[@root='2.16.156.10011.2.5.1.9']", "extension");
             string visitNo = m;
             //拼接接口访问参数
-            msgBody = xmlHelper.GetMsgBody(visitNo);
+            msgBody = xmlHelper.GetMsgBody(visitNo, "patient_zyh",index,size);
             msgHead = xmlHelper.GetMsgHead("getInHospitalInfo", cert);
             //接口访问
             rtnMsg = server.TestInterface(msgHead, msgBody);
@@ -66,7 +66,7 @@ namespace MediII.Adapter.BizComponent.ADT
              */
 
             //是否出院
-            string CheckOutDate = root.SelectSingleNode("//*[name()='CY_DATE']").InnerText;
+            string CheckOutDate = root.SelectSingleNode("//*[name()='cy_date']").InnerText;
 
             if (!string.IsNullOrWhiteSpace(CheckOutDate))
             {
@@ -88,14 +88,14 @@ namespace MediII.Adapter.BizComponent.ADT
                 return;
             }
             //入院日期
-            string CheckInDate = root.SelectSingleNode("//*[name()='RY_DATE']").InnerText;
+            string CheckInDate = root.SelectSingleNode("//*[name()='ry_date']").InnerText;
 
             int num = GetOriginalCount(visitNo);
             using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
             {
                 if (num <= 0)
                 {
-                    var ifsql = @"insert into dbo.zhuyuan_original(patient_zyh,patient_id,RY_DATE,RY_UNIT,RY_BQ,RY_BED,CY_DATE,CY_UNIT,CY_BQ,age,patient_name,Sex,address,JG_DOCT_GH,SZ_DOCT_GH,Nurse_grade,ICD_CODE_RY1,ICD_CODE_RY2,ICD_CODE_RY3,ICD_CODE_RY4,ICD_CODE_CY1,ICD_CODE_CY2,ICD_CODE_CY3,ICD_CODE_CY4,CY_Kind) Values(
+                    var ifsql = @"insert into dbo.zhuyuan_original(patient_zyh,patient_id,RY_DATE,RY_UNIT,RY_BQ,RY_BED,CY_DATE,CY_UNIT,CY_BQ,age,NAME,Sex,address,JG_DOCT_GH,SZ_DOCT_GH,Nurse_grade,ICD_CODE_RY1,ICD_CODE_RY2,ICD_CODE_RY3,ICD_CODE_RY4,ICD_CODE_CY1,ICD_CODE_CY2,ICD_CODE_CY3,ICD_CODE_CY4,CY_Kind) Values(
 @patient_zyh,@patient_id,@RY_DATE,@RY_UNIT,@RY_BQ,@RY_BED,@CY_DATE,@CY_UNIT,@CY_BQ,@age,@patient_name,@Sex,@address,@JG_DOCT_GH,@SZ_DOCT_GH,@Nurse_grade,@ICD_CODE_RY1,@ICD_CODE_RY2,@ICD_CODE_RY3,@ICD_CODE_RY4,@ICD_CODE_CY1,@ICD_CODE_CY2,@ICD_CODE_CY3,@ICD_CODE_CY4,@CY_Kind)";
                     //住院患者基本档
                     foreach (XmlElement xn in list)
@@ -115,7 +115,7 @@ CY_DATE=@CY_DATE,
 CY_UNIT=@CY_UNIT,
 CY_BQ=@CY_BQ,
 age=@age,
-patient_name=@patient_name,
+NAME=@patient_name,
 Sex=@Sex,
 address=@address,
 JG_DOCT_GH=@JG_DOCT_GH,
@@ -137,6 +137,10 @@ CY_Kind=@CY_Kind where patient_zyh=@patient_zyh and patient_id=@patient_id";
                         SqlDataAccess.ExecuteNonQuery(ctx, ucmd);
                     }
                 }
+                scope.Complete(); 
+            }
+            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
+            {
                 var sql = @"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[B02]") <= 0)
                 {
@@ -230,29 +234,29 @@ CY_Kind=@CY_Kind where patient_zyh=@patient_zyh and patient_id=@patient_id";
         {
             SqlDataAccess.AddInParameter(Scanctx, icmd, "patient_zyh", DbType.AnsiString, xn.SelectSingleNode("patient_zyh").InnerText);
             SqlDataAccess.AddInParameter(Scanctx, icmd, "patient_id", DbType.AnsiString, xn.SelectSingleNode("patient_id").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "RY_DATE", DbType.AnsiString, xn.SelectSingleNode("RY_DATE").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "RY_UNIT", DbType.AnsiString, xn.SelectSingleNode("RY_UNIT").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "RY_BQ", DbType.AnsiString, xn.SelectSingleNode("RY_BQ").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "RY_BED", DbType.AnsiString, xn.SelectSingleNode("RY_BED").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "CY_DATE", DbType.AnsiString, xn.SelectSingleNode("CY_DATE").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "CY_UNIT", DbType.AnsiString, xn.SelectSingleNode("CY_UNIT").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "CY_BQ", DbType.AnsiString, xn.SelectSingleNode("CY_BQ").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "age", DbType.AnsiString, xn.SelectSingleNode("age").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "RY_DATE", DbType.AnsiString, xn.SelectSingleNode("ry_date").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "RY_UNIT", DbType.AnsiString, xn.SelectSingleNode("ry_unit").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "RY_BQ", DbType.AnsiString, xn.SelectSingleNode("ry_bq").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "RY_BED", DbType.AnsiString, xn.SelectSingleNode("ry_bed").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "CY_DATE", DbType.AnsiString, xn.SelectSingleNode("cy_date").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "CY_UNIT", DbType.AnsiString, xn.SelectSingleNode("cy_unit").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "CY_BQ", DbType.AnsiString, xn.SelectSingleNode("cy_bq").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "age", DbType.Int32, xn.SelectSingleNode("age").InnerText);
             SqlDataAccess.AddInParameter(Scanctx, icmd, "patient_name", DbType.AnsiString, xn.SelectSingleNode("patient_name").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "Sex", DbType.AnsiString, xn.SelectSingleNode("Sex").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "Sex", DbType.AnsiString, xn.SelectSingleNode("sex").InnerText);
             SqlDataAccess.AddInParameter(Scanctx, icmd, "address", DbType.AnsiString, xn.SelectSingleNode("address").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "JG_DOCT_GH", DbType.AnsiString, xn.SelectSingleNode("JG_DOCT_GH").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "SZ_DOCT_GH", DbType.AnsiString, xn.SelectSingleNode("SZ_DOCT_GH").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "Nurse_grade", DbType.AnsiString, xn.SelectSingleNode("Nurse_grade").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_RY1", DbType.AnsiString, xn.SelectSingleNode("ICD_CODE_RY1").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_RY2", DbType.AnsiString, xn.SelectSingleNode("ICD_CODE_RY2").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_RY3", DbType.AnsiString, xn.SelectSingleNode("ICD_CODE_RY3").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_RY4", DbType.AnsiString, xn.SelectSingleNode("ICD_CODE_RY4").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_CY1", DbType.AnsiString, xn.SelectSingleNode("ICD_CODE_CY1").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_CY2", DbType.AnsiString, xn.SelectSingleNode("ICD_CODE_CY2").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_CY3", DbType.AnsiString, xn.SelectSingleNode("ICD_CODE_CY3").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_CY4", DbType.AnsiString, xn.SelectSingleNode("ICD_CODE_CY4").InnerText);
-            SqlDataAccess.AddInParameter(Scanctx, icmd, "CY_Kind", DbType.AnsiString, xn.SelectSingleNode("CY_Kind").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "JG_DOCT_GH", DbType.AnsiString, xn.SelectSingleNode("jg_doct_gh").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "SZ_DOCT_GH", DbType.AnsiString, xn.SelectSingleNode("sz_doct_gh").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "Nurse_grade", DbType.AnsiString, xn.SelectSingleNode("nurse_grade").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_RY1", DbType.AnsiString, xn.SelectSingleNode("icd_code_ry1").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_RY2", DbType.AnsiString, xn.SelectSingleNode("icd_code_ry2").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_RY3", DbType.AnsiString, xn.SelectSingleNode("icd_code_ry3").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_RY4", DbType.AnsiString, xn.SelectSingleNode("icd_code_ry4").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_CY1", DbType.AnsiString, xn.SelectSingleNode("icd_code_cy1").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_CY2", DbType.AnsiString, xn.SelectSingleNode("icd_code_cy2").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_CY3", DbType.AnsiString, xn.SelectSingleNode("icd_code_cy3").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "ICD_CODE_CY4", DbType.AnsiString, xn.SelectSingleNode("icd_code_cy4").InnerText);
+            SqlDataAccess.AddInParameter(Scanctx, icmd, "CY_Kind", DbType.AnsiString, xn.SelectSingleNode("cy_kind").InnerText);
         }
     }
 }

+ 27 - 3
IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADT_A04B01_Handler.cs

@@ -25,10 +25,12 @@ namespace MediII.Adapter.BizComponent.ADT
             OperateXmlUtil xmlHelper = new OperateXmlUtil();
             //读取配置的凭证号
             var cert = System.Configuration.ConfigurationManager.AppSettings["cert"];
+
+           
             //读取就诊流水号
             string visitNo = m;
             //拼接接口访问参数
-            msgBody = xmlHelper.GetMsgBody(visitNo);
+            msgBody = xmlHelper.GetMsgBody(visitNo, "id", index, size);
             msgHead = xmlHelper.GetMsgHead("getOutPresc", cert);
             //接口访问
             rtnMsg = server.TestInterface(msgHead, msgBody);
@@ -67,9 +69,31 @@ VALUES(@id,@medical_order_id,@fee_date,@yfdm,@yfmc,@cflx,@cfje,@sycfbz,@yjts,@kd
                     ctx.AddInParameter(dcmd, "yfdm", System.Data.DbType.String, xn.SelectSingleNode("yfdm").InnerText);
                     ctx.AddInParameter(dcmd, "yfmc", System.Data.DbType.String, xn.SelectSingleNode("yfmc").InnerText);
                     ctx.AddInParameter(dcmd, "cflx", System.Data.DbType.String, xn.SelectSingleNode("cflx").InnerText);
-                    ctx.AddInParameter(dcmd, "cfje", System.Data.DbType.String, xn.SelectSingleNode("cfje").InnerText);
+                    decimal cfje = 0;
+                    try
+                    {
+                        decimal.TryParse(xn.SelectSingleNode("cfje").InnerText, out cfje);
+
+                    }
+                    catch
+                    {
+
+                    }
+
+                    ctx.AddInParameter(dcmd, "cfje", System.Data.DbType.Decimal, cfje);
                     ctx.AddInParameter(dcmd, "sycfbz", System.Data.DbType.String, xn.SelectSingleNode("sycfbz").InnerText);
-                    ctx.AddInParameter(dcmd, "yjts", System.Data.DbType.String, xn.SelectSingleNode("yjts").InnerText);
+                    decimal yjts = 0;
+                    try
+                    {
+                        decimal.TryParse(xn.SelectSingleNode("yjts").InnerText, out yjts);
+
+                    }
+                    catch
+                    {
+
+                    }
+
+                    ctx.AddInParameter(dcmd, "yjts", System.Data.DbType.Decimal, yjts);
                     ctx.AddInParameter(dcmd, "kdksdm", System.Data.DbType.String, xn.SelectSingleNode("kdksdm").InnerText);
                     ctx.AddInParameter(dcmd, "kdys", System.Data.DbType.String, xn.SelectSingleNode("kdys").InnerText);
                     ctx.DBExecuteNonQuery(dcmd);//

+ 18 - 7
IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADT_A04B02_Handler.cs

@@ -28,7 +28,7 @@ namespace MediII.Adapter.BizComponent.ADT
             //读取就诊流水号
             string visitNo = m;
             //拼接接口访问参数
-            msgBody = xmlHelper.GetMsgBody(visitNo);
+            msgBody = xmlHelper.GetMsgBody(visitNo, "MZ_ID", index, size);
             msgHead = xmlHelper.GetMsgHead("getOutCostDetail", cert);
             //接口访问
             rtnMsg = server.TestInterface(msgHead, msgBody);
@@ -58,15 +58,15 @@ namespace MediII.Adapter.BizComponent.ADT
                 ctx.DBExecuteNonQuery(cmd);//
                 //门诊收费明细
 
-                var osql = @"insert into dbo.original_data_menzhen(mz_id,patient_id,fee_date,order_unit_id,order_doctor_id,exec_unit_id,exec_doctor_id,fee_type_id,fee_type_name,item_id,item_name,item_quantity,price,fee) VALUES(
-@mz_id,@patient_id,@fee_date,@order_unit_id,@order_doctor_id,@exec_unit_id,@exec_doctor_id,@fee_type_id,@fee_type_name,@item_id,@item_name,@item_quantity,@price,@fee);";
+                var osql = @"insert into dbo.original_data_menzhen(mz_id,patient_id,fee_date,torder_unit_id,order_doctor_id,exec_unit_id,exec_doctor_id,fee_type_id,fee_type_name,item_id,item_name,item_quantity,price,fee) VALUES(
+@mz_id,@patient_id,@fee_date,@torder_unit_id,@order_doctor_id,@exec_unit_id,@exec_doctor_id,@fee_type_id,@fee_type_name,@item_id,@item_name,@item_quantity,@price,@fee);";
                 foreach (XmlElement xn in list)
                 {
                     var ocmd = ctx.DBGetSqlStringCommand(osql);
                     ctx.AddInParameter(ocmd, "mz_id", System.Data.DbType.String, xn.SelectSingleNode("mz_id").InnerText);
                     ctx.AddInParameter(ocmd, "patient_id", System.Data.DbType.String, xn.SelectSingleNode("patient_id").InnerText);
                     ctx.AddInParameter(ocmd, "fee_date", System.Data.DbType.DateTime, xn.SelectSingleNode("fee_date").InnerText);
-                    ctx.AddInParameter(ocmd, "order_unit_id", System.Data.DbType.String, xn.SelectSingleNode("order_unit_id").InnerText);
+                    ctx.AddInParameter(ocmd, "torder_unit_id", System.Data.DbType.String, xn.SelectSingleNode("Torder_unit_id").InnerText);
                     ctx.AddInParameter(ocmd, "order_doctor_id", System.Data.DbType.String, xn.SelectSingleNode("order_doctor_id").InnerText);
                     ctx.AddInParameter(ocmd, "exec_unit_id", System.Data.DbType.String, xn.SelectSingleNode("exec_unit_id").InnerText);
                     ctx.AddInParameter(ocmd, "exec_doctor_id", System.Data.DbType.String, xn.SelectSingleNode("exec_doctor_id").InnerText);
@@ -74,9 +74,20 @@ namespace MediII.Adapter.BizComponent.ADT
                     ctx.AddInParameter(ocmd, "fee_type_name", System.Data.DbType.String, xn.SelectSingleNode("fee_type_name").InnerText);
                     ctx.AddInParameter(ocmd, "item_id", System.Data.DbType.String, xn.SelectSingleNode("item_id").InnerText);
                     ctx.AddInParameter(ocmd, "item_name", System.Data.DbType.String, xn.SelectSingleNode("item_name").InnerText);
-                    ctx.AddInParameter(ocmd, "item_quantity", System.Data.DbType.String, xn.SelectSingleNode("item_quantity").InnerText);
-                    ctx.AddInParameter(ocmd, "price", System.Data.DbType.String, xn.SelectSingleNode("price").InnerText);
-                    ctx.AddInParameter(ocmd, "fee", System.Data.DbType.String, xn.SelectSingleNode("fee").InnerText);
+
+                    decimal item_quantity = 0;
+                    decimal.TryParse(StrHelepr.ObjToStrTrim(xn.SelectSingleNode("item_quantity").InnerText), out item_quantity);
+                    ctx.AddInParameter(ocmd, "item_quantity", DbType.Decimal, item_quantity);
+                    decimal price = 0;
+                    decimal.TryParse(StrHelepr.ObjToStrTrim(xn.SelectSingleNode("price").InnerText), out price);
+                    ctx.AddInParameter(ocmd, "price", System.Data.DbType.Decimal, price);
+                    decimal fee = 0;
+                    decimal.TryParse(StrHelepr.ObjToStrTrim(xn.SelectSingleNode("fee").InnerText), out fee);
+                    ctx.AddInParameter(ocmd, "fee", System.Data.DbType.Decimal, fee);
+
+                    //ctx.AddInParameter(ocmd, "item_quantity", DbType.Decimal, xn.SelectSingleNode("item_quantity").InnerText);
+                    //ctx.AddInParameter(ocmd, "price", System.Data.DbType.Decimal, xn.SelectSingleNode("price").InnerText);
+                    //ctx.AddInParameter(ocmd, "fee", System.Data.DbType.Decimal, xn.SelectSingleNode("fee").InnerText);
                     ctx.DBExecuteNonQuery(ocmd);//
                 }
                 

+ 23 - 3
IL.BizComponent/MediII.Adapter.BizComponent.ADT/ADT_A04B03_Handler.cs

@@ -28,7 +28,7 @@ namespace MediII.Adapter.BizComponent.ADT
             //读取就诊流水号
             string visitNo = m;
             //拼接接口访问参数
-            msgBody = xmlHelper.GetMsgBody(visitNo);
+            msgBody = xmlHelper.GetMsgBody(visitNo, "VISITNO");
             msgHead = xmlHelper.GetMsgHead("getRegisterDetail", cert);
             //接口访问
             rtnMsg = server.TestInterface(msgHead, msgBody);
@@ -70,8 +70,28 @@ namespace MediII.Adapter.BizComponent.ADT
                     ctx.AddInParameter(gcmd, "doct_name", System.Data.DbType.String, xn.SelectSingleNode("doct_name").InnerText);
                     ctx.AddInParameter(gcmd, "item_id", System.Data.DbType.String, xn.SelectSingleNode("item_id").InnerText);
                     ctx.AddInParameter(gcmd, "item_name", System.Data.DbType.String, xn.SelectSingleNode("item_name").InnerText);
-                    ctx.AddInParameter(gcmd, "item_quantity", System.Data.DbType.String, xn.SelectSingleNode("item_quantity").InnerText);
-                    ctx.AddInParameter(gcmd, "fee", System.Data.DbType.String, xn.SelectSingleNode("fee").InnerText);
+                    decimal item_quantity = 0;
+                    try
+                    {
+                        decimal.TryParse(xn.SelectSingleNode("item_quantity").InnerText, out item_quantity);
+
+                    }
+                    catch
+                    {
+
+                    }
+                    ctx.AddInParameter(gcmd, "item_quantity", System.Data.DbType.Decimal, item_quantity);
+                    decimal fee = 0;
+                    try
+                    {
+                        decimal.TryParse(xn.SelectSingleNode("fee").InnerText, out fee);
+
+                    }
+                    catch
+                    {
+
+                    }
+                    ctx.AddInParameter(gcmd, "fee", System.Data.DbType.Decimal, fee);
                     ctx.AddInParameter(gcmd, "fee_kind", System.Data.DbType.String, xn.SelectSingleNode("fee_kind").InnerText);
                     ctx.DBExecuteNonQuery(gcmd);//
                 }

+ 264 - 598
IL.BizComponent/MediII.Adapter.BizComponent.DFP/BizComponent_DFT.cs

@@ -1,598 +1,264 @@
-using System;
-using System.Data;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-//using MediII.Adapter.BaseBiz;
-using System.Data.Common;
-using System.Transactions;
-using Microsoft.Practices.EnterpriseLibrary.Data;
-//using MediII.Adapter.Model.UE;
-using System.Globalization;
-using MediII.Adapter.BizComponent.Base;
-using IL.Common;
-using System.Xml;
-
-namespace MediII.Adapter.BizComponent.DFT
-{
-    public class BizComponent_DFT : BaseBizComponent, IBizComponent
-    {
-        const string Insert = "B01"; //增加个人纪录
-        //const string Update = "B02"; //更新个人记录
-        //const string Delete = "B03"; //删除个人记录
-
-
-        //数据库连接
-        protected Database ctx;
-        protected Database Scanctx;
-        public BizComponent_DFT()
-        {
-            DatabaseProviderFactory factory = new DatabaseProviderFactory();
-            ctx = factory.Create("HealthCare");
-            Scanctx = factory.CreateDefault();
-        }
-        ////HealthCareContainer HealthCareContainer = new HealthCareContainer();
-        //private Database ctx = null;
-        //public BizComponent_PMU(Database dbCtx)
-        //{
-        //    ctx = dbCtx;
-        //}
-        public override string DoProcess(string m, string msgType, string ID)
-        {
-            string strMsgType = null;
-            var resultCode = string.Empty;
-            var result = string.Empty;
-            //try
-            //{
-            //try
-            // {
-            //取得消息类型 MAD新增 MUP更新 MDL删除 "MDC"作废 "MAC"恢复
-            OperateXmlUtil helper = new OperateXmlUtil();
-            WebService server = new WebService();
-            string orgCode = System.Configuration.ConfigurationManager.AppSettings["orgCode"];
-            var cert = System.Configuration.ConfigurationManager.AppSettings["cert"];                                             
-            //string qurysql = "select count(*) from dbo.his_doct where DOCT_CODE=@DOCT_CODE";
-            //DbCommand command = ctx.GetSqlStringCommand(qurysql.ToString());
-            //string pkid = helper.XpathRead(m, "//*[@root='2.16.156.10011.1.4']", "extension");
-            //ctx.AddInParameter(command, "DOCT_CODE", System.Data.DbType.String, pkid);
-            //int counts = Convert.ToInt32(ctx.ExecuteScalar(command));
-
-            string msgBody = helper.GetMsgBody(orgCode);
-            string msgHead = helper.GetMsgHead("getItemDict", cert);
-
-
-            string rtnMsg = server.TestInterface(msgHead, msgHead);
-            //存储访问记录
-            MessageHelper.SaveSendMsg(Scanctx, ID, "DFT^B01[B01]", msgHead, msgBody, rtnMsg);
-            //消息判断是否成功
-            if (!helper.isSuccess(rtnMsg, ref resultCode, ref result))
-            {
-                throw new Exception(result);
-            }
-            
-            XmlNodeList root = helper.XpathRead(rtnMsg, "//returnContents//returnContent");
-            if (root.Count <= 0)
-                return string.Empty;
-            
-            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
-            {
-                var usql = @"update item_his_original set yn_code=@yn_code,item_name=@item_name,fee_code=@fee_code,fee_name=@fee_code,spell_code=@spell_code,price=@price,status=@status,status_date=@status_date where item_code=@item_code";
-                var sql = @"insert into item_his_original(item_code,yn_code,item_name,fee_code,fee_name,spell_code,price,status,status_date) Values(@item_code,@yn_code,@item_name,@fee_code,@fee_name,@spell_code,@price,@status,@status_date);";
-                foreach (XmlElement xe in root)
-                {
-                    var iSet = GetDOCT(xe.SelectSingleNode("item_code").InnerText);
-                    if (iSet <= 0)
-                    {
-                        var cmd = SqlDataAccess.GetSqlStringCommand(ctx, sql);
-                        ctx.AddInParameter(cmd, "item_code", System.Data.DbType.String, xe.SelectSingleNode("item_code").InnerText);
-                        ctx.AddInParameter(cmd, "yn_code", System.Data.DbType.String, xe.SelectSingleNode("yn_code").InnerText);
-                        ctx.AddInParameter(cmd, "item_name", System.Data.DbType.String, xe.SelectSingleNode("item_name").InnerText);
-                        ctx.AddInParameter(cmd, "fee_code", System.Data.DbType.String, xe.SelectSingleNode("fee_code").InnerText);
-                        ctx.AddInParameter(cmd, "fee_name", System.Data.DbType.String, xe.SelectSingleNode("fee_name").InnerText);
-                        ctx.AddInParameter(cmd, "spell_code", System.Data.DbType.String, xe.SelectSingleNode("spell_code").InnerText);
-                        ctx.AddInParameter(cmd, "price", System.Data.DbType.Decimal, xe.SelectSingleNode("price").InnerText);
-                        ctx.AddInParameter(cmd, "status", System.Data.DbType.String, xe.SelectSingleNode("status").InnerText);
-                        var date = xe.SelectSingleNode("status_date").InnerText;
-                        DateTime time = DateTime.Now;
-                        if (!string.IsNullOrWhiteSpace(date))
-                        {
-                            if (!DateTime.TryParse(date, out time))
-                            {
-                                time = DateTime.Now;
-                            }
-                        }
-                        ctx.AddInParameter(cmd, "status_date", System.Data.DbType.DateTime, time);
-                        SqlDataAccess.DBExecuteNonQuery(ctx, cmd);
-                    }
-                    else
-                    {
-                        var cmd = SqlDataAccess.GetSqlStringCommand(ctx, usql);
-                        ctx.AddInParameter(cmd, "item_code", System.Data.DbType.String, xe.SelectSingleNode("item_code").InnerText);
-                        ctx.AddInParameter(cmd, "yn_code", System.Data.DbType.String, xe.SelectSingleNode("yn_code").InnerText);
-                        ctx.AddInParameter(cmd, "item_name", System.Data.DbType.String, xe.SelectSingleNode("item_name").InnerText);
-                        ctx.AddInParameter(cmd, "fee_code", System.Data.DbType.String, xe.SelectSingleNode("fee_code").InnerText);
-                        ctx.AddInParameter(cmd, "fee_name", System.Data.DbType.String, xe.SelectSingleNode("fee_name").InnerText);
-                        ctx.AddInParameter(cmd, "spell_code", System.Data.DbType.String, xe.SelectSingleNode("spell_code").InnerText);
-                        ctx.AddInParameter(cmd, "price", System.Data.DbType.Decimal, xe.SelectSingleNode("price").InnerText);
-                        ctx.AddInParameter(cmd, "status", System.Data.DbType.String, xe.SelectSingleNode("status").InnerText);
-                        var date = xe.SelectSingleNode("status_date").InnerText;
-                        DateTime time = DateTime.Now;
-                        if (!string.IsNullOrWhiteSpace(date))
-                        {
-                            if (!DateTime.TryParse(date, out time))
-                            {
-                                time = DateTime.Now;
-                            }
-                        }
-                        ctx.AddInParameter(cmd, "status_date", System.Data.DbType.DateTime, time);
-                        SqlDataAccess.DBExecuteNonQuery(ctx, cmd);
-                    }
-                }
-                var ScanSql = @"update HL7_Scan set OtherNo1=CONVERT(varchar(100), GETDATE(), 120),TaskStatus=1 where ID=@ID";
-                var ucmd = SqlDataAccess.GetSqlStringCommand(Scanctx, ScanSql);
-                Scanctx.AddInParameter(ucmd, "ID", System.Data.DbType.String, ID);
-                SqlDataAccess.DBExecuteNonQuery(Scanctx, ucmd);
-                scope.Complete();
-            }
-            return string.Empty;
-        }
-        public void AddData(string message,string id)
-        {
-            #region 新增
-            string sql = @"INSERT INTO dbo.his_doct
-                                    ( DOCT_CODE ,
-                                    DOCT_NAME ,
-                                    HIS_DEPT_CODE ,
-                                    HIS_DEPT_NAME ,
-                                    status
-                                    )
-                            VALUES  ( @DOCT_CODE,
-                                    @DOCT_NAME ,
-                                    @HIS_DEPT_CODE ,
-                                    @HIS_DEPT_NAME ,
-                                    @status)";
-            DbCommand command = ctx.GetSqlStringCommand(sql.ToString());
-
-            SetEntity(message, command, id);
-            SqlDataAccess.ExecuteNonQuery(ctx, command);
-            #endregion
-        }
-        public void UpDateData(string message, string id)
-        {
-            #region 修改
-            string sql1 = @"update dbo.his_doct set 
-                                    DOCT_NAME =@DOCT_NAME,
-                                    HIS_DEPT_CODE =@HIS_DEPT_CODE,
-                                    HIS_DEPT_NAME =@HIS_DEPT_NAME,
-                                    status=@status
-                                where DOCT_CODE=@DOCT_CODE";
-            DbCommand command1 = ctx.GetSqlStringCommand(sql1.ToString());
-
-            SetEntity(message, command1, id);
-            SqlDataAccess.ExecuteNonQuery(ctx, command1);
-            #endregion
-        }
-
-        public void SetEntity(string message,DbCommand command,string id)
-        {
-            string value = string.Empty;
-            OperateXmlUtil xmlHelper = new OperateXmlUtil();
-
-            ctx.AddInParameter(command, "DOCT_CODE", System.Data.DbType.String, id);
-            var valueNode = xmlHelper.XpathRead(message, "//*[name()='healthCarePrincipalPerson']").Item(0);
-
-            foreach (XmlNode xe in valueNode.ChildNodes)
-            {
-                if (xe.Name == "name")
-                {
-                    value = xe.LastChild.LastChild.Attributes["value"].Value;
-                    ctx.AddInParameter(command, "DOCT_NAME", System.Data.DbType.String, value);
-
-                    break;
-                }
-            }
-
-            value = xmlHelper.XpathRead(message, "//*[@root='2.16.156.10011.1.26']", "extension");
-            ctx.AddInParameter(command, "HIS_DEPT_CODE", System.Data.DbType.AnsiString, value);
-
-            valueNode = xmlHelper.XpathRead(message, "//*[name()='affiliatedPrincipalOrganization']").Item(0);
-            foreach (XmlNode xe in valueNode.ChildNodes)
-            {
-                if (xe.Name == "name")
-                {
-                    value = xe.LastChild.LastChild.Attributes["value"].Value;
-                    ctx.AddInParameter(command, "HIS_DEPT_NAME", System.Data.DbType.String, value);
-
-                    break;
-                }
-            }
-            ctx.AddInParameter(command, "status", System.Data.DbType.String, "在用");
-            //ctx.ExecuteNonQuery(command);
-        }
-
-        public int GetDOCT(string DOCT_Code)
-        {
-            var sql = "SELECT count(1) FROM dbo.item_his_original WITH(NOLOCK) WHERE item_code=@item_code";
-            var cmd = ctx.DBGetSqlStringCommand(sql);
-            ctx.AddInParameter(cmd, "item_code", DbType.String, DOCT_Code);
-            var obj = int.Parse(StrHelepr.Obj2StrTrim(ctx.DBExecuteScalar(cmd)));
-            return obj;
-        }
-       
-
-
-
-      
-
-    }
-
-}
-#region 此为老版本代码
-/*
-Employee Module_Employee = new Employee();
-
-strMsgType = pmuB01.EVN.EventTypeCode.Value;
-
-#region STG
-STF stf = pmuB01.STF;
-
-Module_Employee.EmpNo = Convert.ToInt16(stf.PrimaryKeyValueSTF.Identifier.Value);// 员工代号
-Module_Employee.EmpCode = stf.GetStaffIDCode(0).ID.Value;// 员工代码
-Module_Employee.EmpName = stf.GetStaffName(0).GivenName.Value;// 姓名
-Module_Employee.EngName = stf.GetStaffName(0).GivenName.Value;// 英文姓名
-Module_Employee.IdNo = stf.DriverSLicenseNumberStaff.DriverSLicenseNumber.Value.Trim() ;// 身份证号 <<<<<<<<<<<<<<<<<<<<<< 目前ISNULL
-
-#region 性别转换
-// 1:男 2:女
-Module_Employee.Sex = His.MediIITransfer.MediII2Ue.GetSex(stf.AdministrativeSex.Value);
-#endregion
-
-Module_Employee.Birthday = His.Time.TryParseExact(stf.DateTimeOfBirth.TimeOfAnEvent.Value, "yyyyMMddhhmmss");
-
-#region 婚姻状况
-// 婚姻状况 (0:未婚,1:已婚,2:离婚)
-switch (stf.MaritalStatus.Text.Value)
-{
-    case "S"://S	独身
-    case "P"://P	同性恋
-    case "G"://G	同居
-    case "B"://B	未婚
-    case "U"://U	未知
-    case "O"://O	其他
-    case "T"://T	未报告
-        Module_Employee.MaritalStatus = "0";
-        break;
-    case "M"://M	结婚
-    case "A":  //A	分居
-    case "W"://W	丧偶
-    case "R"://R	已登记同性恋
-    case "E"://E	合法分居
-    // case "C"://C	普通法律
-    case "I"://I	诉讼中
-        Module_Employee.MaritalStatus = "1";
-        break;
-
-    case "D"://D	离婚
-        Module_Employee.MaritalStatus = "2";
-        break;
-    default:
-        Module_Employee.MaritalStatus = "0";
-        break;
-}
-#endregion
-
-Module_Employee.HomeAdrArea = 0;// 住处区域代码 <<<<<<<<<<<<<<<<<<<<<<<<<<<
-Module_Employee.HomeAdrDesc = stf.GetOfficeHomeAddress(0).StreetAddress.StreetOrMailingAddress.Value;// 住处地址
-Module_Employee.HomeTel1 = stf.GetPhone(0).PhoneNumber.Value;// 住处电话1
-Module_Employee.HomeTel2 = "0"; // 住处电话2(不同步)
-
-Module_Employee.MobilePhone = stf.GetPhone(0).PhoneNumber.Value; // 移动电话
-
-Module_Employee.NativeAdrArea = 0;// 户籍区域代码(不同步)
-Module_Employee.NativeAdrDesc = "";// 户籍地址(不同步)
-Module_Employee.NativeTel = "";// 户籍电话(不同步)
-
-Module_Employee.ConName = "";// 联系人姓名(不同步)
-Module_Employee.ConTel1 = "";// 络人电话(不同步)
-Module_Employee.ConTel2 = "";// 络人电话(不同步)
-
-Module_Employee.ConAdrArea = 0;// 联系人区域代码(不同步)
-Module_Employee.ConAdrDesc = "";// 联系人地址(不同步)
-
-Module_Employee.Affiliation = "";// 与联系人关系(不同步)
-
-try
-{
-     string sHireDate =stf.GetInstitutionActivationDate(0).Date.TimeOfAnEvent.Value;
-    DateTime dtHireDate = His.Time.TryParseExact(sHireDate, "yyyyMMddhhmmss");
-
-    Module_Employee.HireDate = dtHireDate == His.Time.MaxDateTime ? Convert.ToDateTime("1911-01-01 00:00:00") : dtHireDate; // 到职日期
-
-}
-catch
-{
-    Module_Employee.HireDate = Convert.ToDateTime("1911-01-01 00:00:00");
-}
-               
-Module_Employee.Zone = "A";// 归属院区(联众会开栏位**********)<<<<<<<<<<<<<<<<<<<<<<
-
-string tmp = stf.GetDepartment(0).Identifier.Value;
-
-try
-{
-    string sDepartNo = His.MediIITransfer.MediII2Ue.GetDepartNo(stf.GetDepartment(0).Identifier.Value);
-    Module_Employee.DepartNo = Convert.ToInt16(sDepartNo);// 部门代码
-}
-catch (Exception ex)
-{
-    Module_Employee.DepartNo = -1;
-}
-
-Module_Employee.EmpType = stf.GetStaffType(0).Value;
-
-#region 员工分类
-
-switch (stf.GetStaffType(0).Value) // 员工分类
-{
-    case "1"://1	医生
-        Module_Employee.EmpType = "1";
-        break;
-    case "2"://2	护士
-        Module_Employee.EmpType = "2";
-        break;
-    case "3"://3	财务人员
-        Module_Employee.EmpType = "3";
-        break;
-    case "4"://4	药剂人员
-        Module_Employee.EmpType = "4";
-        break;
-    case "5"://5	技师(检验)
-    case "6"://6	技师(影像)
-    case "7"://7	管理人员
-    case "8"://8	其他卫生技术人员
-    case "9"://9	其他人员
-        Module_Employee.EmpType = "0";
-        break;
-}
-#endregion
-string tmp2 = stf.JobCodeClass.JobCode.Value;
-
-try
-{
-    Module_Employee.Title = Convert.ToInt16(stf.JobCodeClass.JobCode.Value);// 职称
-}
-catch (Exception ex)
-{
-    Module_Employee.Title = -1;
-}
-
-
-Module_Employee.ChiefNo = Convert.ToInt16(stf.GetHospitalService(0).Identifier.Value);// 职位
-string tmp3 = stf.GetDepartment(0).Identifier.Value;
-
-try
-{
-    string sWorkDepartNo = His.MediIITransfer.MediII2Ue.GetDepartNo(stf.GetDepartment(0).Identifier.Value);
-    Module_Employee.WorkDepartNo = Convert.ToInt16(sWorkDepartNo);// 工作单位代号  <<<<<<<<<<<<<
-
-}
-catch
-{
-    Module_Employee.WorkDepartNo = -1;
-}
-
-Module_Employee.SimpleTel = stf.GetPhone(0).PhoneNumber.Value;// 速拨码
-Module_Employee.SubTel = stf.GetPhone(0).PhoneNumber.Value;// 分机
-
-string sPassword = stf.GetBackupPersonID(0).Identifier.Value;
-
-Module_Employee.Password = sPassword == null ? "" : sPassword;
-Module_Employee.PasswordTime = DateTime.Now; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-Module_Employee.PressCard = 0;// 工作卡号(暫時不填)
-
-
-string  sActiveInactiveFlag = stf.ActiveInactiveFlag.Value; // A,在职;I,离职
-Module_Employee.ResignDate = sActiveInactiveFlag == "A" ? His.Time.MaxDateTime : His.Time.MaxDateTime; 
-
-int iIntParse;
-int.TryParse(stf.PreferredMethodOfContact.Identifier.Value, out iIntParse);
-if (iIntParse != 0)
-{
-    Module_Employee.UpdateUser = Convert.ToInt16(iIntParse);// 最后修改人
-}
-
-Module_Employee.UpdateTime = DateTime.Now;
-
-Module_Employee.EMail = "";// 电子信箱(不同步)
-
-Module_Employee.Remark = "";// 备注说明(不同步)
-
-Module_Employee.Team = 0;// 组别
-
-#endregion
-
-#region 測試
-
-string sErrMsg;
-if (string.IsNullOrEmpty(Module_Employee.IdNo))
-{
-    sErrMsg = "【身份证】无法为空";
-    SetACK(m, "ACK", strMsgType, "ACK", sErrMsg);
-}
-
-if (string.IsNullOrEmpty(Module_Employee.HomeAdrDesc))
-{
-    Module_Employee.HomeAdrDesc = "";
-}
-
-if (string.IsNullOrEmpty(Module_Employee.HomeTel1))
-{
-    Module_Employee.HomeTel1 = "";
-}
-
-if (string.IsNullOrEmpty(Module_Employee.HomeTel1))
-{
-    Module_Employee.HomeTel1 = ""; // 住处电话1
-}
-
-if (string.IsNullOrEmpty(Module_Employee.MobilePhone))
-{
-    Module_Employee.MobilePhone = ""; // 移动电话1
-}
-
-if (string.IsNullOrEmpty(Module_Employee.MobilePhone))
-{
-    Module_Employee.MobilePhone = ""; // 移动电话1
-}
-
-
-//Module_Employee.HireDate = His.Time.TryParseExact(sHireDate, "yyyyMMdd"); // 到职日期
-//Module_Employee.Title = Convert.ToInt16(stf.JobCodeClass.JobCode.Value);// 职称
-
-//Module_Employee.ChiefNo = Convert.ToInt16(stf.GetHospitalService(0).Identifier.Value);// 职位
-
-if (string.IsNullOrEmpty(Module_Employee.MobilePhone))
-{
-    Module_Employee.SimpleTel = "";// 速拨码
-}
-
-if (string.IsNullOrEmpty(Module_Employee.MobilePhone))
-{
-    Module_Employee.SubTel = "";// 分机
-}
-
-if (string.IsNullOrEmpty(Module_Employee.Password))
-{
-    sErrMsg = "【密碼】无法为空";
-    SetACK(m, "ACK", strMsgType, "ACK", sErrMsg);
-}
-
-//if (Module_Employee.HireDate == DateTime.MinValue)
-//{
-//    Module_Employee.HireDate = His.Time.MaxDateTime;
-//}
-if (Module_Employee.PasswordTime == DateTime.MinValue)
-{
-    Module_Employee.PasswordTime = His.Time.MaxDateTime;
-}
-if (Module_Employee.UpdateTime == DateTime.MinValue)
-{
-    Module_Employee.UpdateTime = His.Time.MaxDateTime;
-}
-
-if (Module_Employee.ResignDate == DateTime.MinValue)
-{
-    Module_Employee.ResignDate = His.Time.MaxDateTime;
-}
-
-
-//Module_Employee.ResignDate = His.Time.TryParseExact(sResignDate, "yyyyMMdd"); // 离职日期
-#endregion
-
-
-// 開始存入資料庫
-int iEmpNo = Convert.ToInt16(stf.PrimaryKeyValueSTF.Identifier.Value);// 员工代号
-using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
-{
-    switch (strMsgType)
-    {
-        case Insert:
-        case Update:
-            EmployeeDelete(iEmpNo, ref HealthCareContainer, scope, ref Module_Employee);
-            EmployeeInsert(iEmpNo, ref HealthCareContainer, scope, ref Module_Employee);
-            break;
-        case Delete:
-            EmployeeDelete(iEmpNo, ref HealthCareContainer, scope, ref Module_Employee);
-            break;
-    }
-
-    #region 存入資料庫
-
-    try
-    {
-        HealthCareContainer.SaveChanges();
-    }
-    catch (System.Data.Entity.Validation.DbEntityValidationException ex)
-    {
-        scope.Dispose();
-        throw ex;
-    }
-    #endregion
-
-    scope.Complete();
-
-
-}
-*/
-//        return string.Empty;
-
-//    }
-//    catch (Exception ex)
-//    {
-//        string errMsg = string.Empty;
-//        if (ex.InnerException == null)
-//        {
-//            errMsg = ex.Message + "\r\n" + ex.StackTrace;
-//        }
-//        else
-//        {
-//            errMsg = ex.Message + "\r\n" + ex.InnerException.Message + "\r\n" + ex.InnerException.StackTrace;
-//        }
-//        return errMsg;
-//    }
-//}
-// catch (System.Data.Entity.Validation.DbEntityValidationException ex)
-//{
-//var tmp = ex.EntityValidationErrors.FirstOrDefault().ValidationErrors;
-//string errString = "";
-//foreach (var item in tmp)
-//{
-//    errString += item.ErrorMessage;
-//}
-//string ack = SetACK(m, "ACK", mType, "ACK", ex.EntityValidationErrors.ToString());
-//throw new Exception(string.Format("{0}\r\n{1}", ex.EntityValidationErrors.ToString()));
-
-//return ex.Message;
-//}
-//}
-
-
-/*
-
-public void EmployeeInsert(int iEmpNo, ref HealthCareContainer HealthCareContainer, TransactionScope scope, ref Employee Module_Employee)
-{
-    try
-    {
-        HealthCareContainer.Employee.Add(Module_Employee);
-
-    }
-    catch (Exception ex)
-    {
-        scope.Dispose();
-        throw ex;
-    }
-}
-
-public void EmployeeDelete(int iEmpNo, ref HealthCareContainer HealthCareContainer, TransactionScope scope, ref Employee Module_Employee)
-{
-    try
-    {
-        IEnumerable<Employee> EmployeeList = HealthCareContainer.Employee.Where(x => x.EmpNo == iEmpNo);
-        if (EmployeeList.Count() != 0)
-        {
-            Employee Module_Employee_Del = EmployeeList.FirstOrDefault();
-            HealthCareContainer.Employee.Remove(Module_Employee_Del);
-            HealthCareContainer.SaveChanges();
-        }
-
-    }
-    catch (Exception ex)
-    {
-        scope.Dispose();
-        throw ex;
-    }
-}
-*/
-// }
-//}
-#endregion
+using System;
+using System.Data;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+//using MediII.Adapter.BaseBiz;
+using System.Data.Common;
+using System.Transactions;
+using Microsoft.Practices.EnterpriseLibrary.Data;
+//using MediII.Adapter.Model.UE;
+using System.Globalization;
+using MediII.Adapter.BizComponent.Base;
+using IL.Common;
+using System.Xml;
+
+namespace MediII.Adapter.BizComponent.DFT
+{
+    public class BizComponent_DFT : BaseBizComponent, IBizComponent
+    {
+        const string Insert = "B01"; //增加个人纪录
+        //const string Update = "B02"; //更新个人记录
+        //const string Delete = "B03"; //删除个人记录
+
+
+        //数据库连接
+        protected Database ctx;
+        protected Database Scanctx;
+        public BizComponent_DFT()
+        {
+            DatabaseProviderFactory factory = new DatabaseProviderFactory();
+            ctx = factory.Create("HealthCare");
+            Scanctx = factory.CreateDefault();
+        }
+        ////HealthCareContainer HealthCareContainer = new HealthCareContainer();
+        //private Database ctx = null;
+        //public BizComponent_PMU(Database dbCtx)
+        //{
+        //    ctx = dbCtx;
+        //}
+        public override string DoProcess(string m, string msgType, string ID)
+        {
+            string strMsgType = null;
+            var resultCode = string.Empty;
+            var result = string.Empty;
+            //try
+            //{
+            //try
+            // {
+            //取得消息类型 MAD新增 MUP更新 MDL删除 "MDC"作废 "MAC"恢复
+            OperateXmlUtil helper = new OperateXmlUtil();
+            WebService server = new WebService();
+            string orgCode = System.Configuration.ConfigurationManager.AppSettings["orgCode"];
+            var cert = System.Configuration.ConfigurationManager.AppSettings["cert"];
+           
+            var startTime="";
+            var endTime = DateTime.Now.ToString("yyyy-MM-dd");
+            var pageIndex="0";
+            var pageSize = System.Configuration.ConfigurationManager.AppSettings["pageSize"];
+            GetStartTime(ID,out startTime,out pageIndex);
+            string msgBody = helper.GetMsgBody(orgCode, "startTime", startTime, "endTime", endTime, pageIndex, pageSize);
+            string msgHead = helper.GetMsgHead("getChargeitem", cert);
+
+
+            string rtnMsg = server.TestInterface(msgHead, msgHead);
+            //存储访问记录
+            MessageHelper.SaveSendMsg(Scanctx, ID, "DFT^B01[B01]", msgHead, msgBody, rtnMsg);
+            //消息判断是否成功
+            if (!helper.isSuccess(rtnMsg, ref resultCode, ref result))
+            {
+                throw new Exception(result);
+            }
+
+            XmlNodeList root = helper.XpathRead(rtnMsg, "//returnContents//returnContent");
+            if (root.Count <= 0)
+                return string.Empty;
+
+            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
+            {
+                var usql = @"update item_his_original set yn_code=@yn_code,item_name=@item_name,fee_code=@fee_code,fee_name=@fee_code,spell_code=@spell_code,price=@price,status=@status,status_date=@status_date where item_code=@item_code";
+                var sql = @"insert into item_his_original(item_code,yn_code,item_name,fee_code,fee_name,spell_code,price,status,status_date) Values(@item_code,@yn_code,@item_name,@fee_code,@fee_name,@spell_code,@price,@status,@status_date);";
+                foreach (XmlElement xe in root)
+                {
+                    var iSet = GetDOCT(xe.SelectSingleNode("item_code").InnerText);
+                    if (iSet <= 0)
+                    {
+                        var cmd = SqlDataAccess.GetSqlStringCommand(ctx, sql);
+                        ctx.AddInParameter(cmd, "item_code", System.Data.DbType.String, xe.SelectSingleNode("ITEM_CODE").InnerText);
+                        ctx.AddInParameter(cmd, "yn_code", System.Data.DbType.String, xe.SelectSingleNode("YN_CODE").InnerText);
+                        ctx.AddInParameter(cmd, "item_name", System.Data.DbType.String, xe.SelectSingleNode("ITEM_NAME").InnerText);
+                        ctx.AddInParameter(cmd, "fee_code", System.Data.DbType.String, xe.SelectSingleNode("FEE_CODE").InnerText);
+                        ctx.AddInParameter(cmd, "fee_name", System.Data.DbType.String, xe.SelectSingleNode("FEE_NAME").InnerText);
+                        ctx.AddInParameter(cmd, "spell_code", System.Data.DbType.String, xe.SelectSingleNode("SPELL_CODE").InnerText);
+                        decimal price = 0;
+                        try
+                        {
+                            decimal.TryParse(xe.SelectSingleNode("PRICE").InnerText, out price);
+                            this.ctx.AddInParameter(cmd, "price", System.Data.DbType.Decimal, price);
+                        }
+                        catch
+                        {
+                            this.ctx.AddInParameter(cmd, "price", System.Data.DbType.Decimal, 0);
+                        }
+                        //ctx.AddInParameter(cmd, "price", System.Data.DbType.Decimal, xe.SelectSingleNode("PRICE").InnerText);
+
+                        ctx.AddInParameter(cmd, "status", System.Data.DbType.String, xe.SelectSingleNode("STATUS").InnerText);
+                        var date = xe.SelectSingleNode("STATUS_DATE").InnerText;
+                        DateTime time = DateTime.Now;
+                        if (!string.IsNullOrWhiteSpace(date))
+                        {
+                            if (!DateTime.TryParse(date, out time))
+                            {
+                                time = DateTime.Now;
+                            }
+                        }
+                        ctx.AddInParameter(cmd, "status_date", System.Data.DbType.DateTime, time);
+                        SqlDataAccess.DBExecuteNonQuery(ctx, cmd);
+                    }
+                    else
+                    {
+                        var cmd = SqlDataAccess.GetSqlStringCommand(ctx, usql);
+                        ctx.AddInParameter(cmd, "item_code", System.Data.DbType.String, xe.SelectSingleNode("ITEM_CODE").InnerText);
+                        ctx.AddInParameter(cmd, "yn_code", System.Data.DbType.String, xe.SelectSingleNode("YN_CODE").InnerText);
+                        ctx.AddInParameter(cmd, "item_name", System.Data.DbType.String, xe.SelectSingleNode("ITEM_NAME").InnerText);
+                        ctx.AddInParameter(cmd, "fee_code", System.Data.DbType.String, xe.SelectSingleNode("FEE_CODE").InnerText);
+                        ctx.AddInParameter(cmd, "fee_name", System.Data.DbType.String, xe.SelectSingleNode("FEE_NAME").InnerText);
+                        ctx.AddInParameter(cmd, "spell_code", System.Data.DbType.String, xe.SelectSingleNode("SPELL_CODE").InnerText);
+                        decimal price = 0;
+                        try
+                        {
+                            decimal.TryParse(xe.SelectSingleNode("PRICE").InnerText, out price);
+                            this.ctx.AddInParameter(cmd, "price", System.Data.DbType.Decimal, price);
+                        }
+                        catch
+                        {
+                            this.ctx.AddInParameter(cmd, "price", System.Data.DbType.Decimal, 0);
+                        }
+                        //ctx.AddInParameter(cmd, "price", System.Data.DbType.Decimal, xe.SelectSingleNode("price").InnerText);
+                        ctx.AddInParameter(cmd, "status", System.Data.DbType.String, xe.SelectSingleNode("STATUS").InnerText);
+                        var date = xe.SelectSingleNode("STATUS_DATE").InnerText;
+                        DateTime time = DateTime.Now;
+                        if (!string.IsNullOrWhiteSpace(date))
+                        {
+                            if (!DateTime.TryParse(date, out time))
+                            {
+                                time = DateTime.Now;
+                            }
+                        }
+                        ctx.AddInParameter(cmd, "status_date", System.Data.DbType.DateTime, time);
+                        SqlDataAccess.DBExecuteNonQuery(ctx, cmd);
+                    }
+                }
+                scope.Complete();
+            }
+            using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.RequiresNew))
+			{
+                var ScanSql = @"update HL7_Scan set OtherNo2=@OtherNo2 where ID=@ID";
+                var ucmd = SqlDataAccess.GetSqlStringCommand(Scanctx, ScanSql);
+                Scanctx.AddInParameter(ucmd, "ID", System.Data.DbType.String, ID);
+                Scanctx.AddInParameter(ucmd, "OtherNo2", System.Data.DbType.String, pageIndex);
+                SqlDataAccess.DBExecuteNonQuery(Scanctx, ucmd);
+                transactionScope.Complete();
+                
+            }
+            return string.Empty;
+        }
+        public void AddData(string message, string id)
+        {
+            #region 新增
+            string sql = @"INSERT INTO dbo.his_doct
+                                    ( DOCT_CODE ,
+                                    DOCT_NAME ,
+                                    HIS_DEPT_CODE ,
+                                    HIS_DEPT_NAME ,
+                                    status
+                                    )
+                            VALUES  ( @DOCT_CODE,
+                                    @DOCT_NAME ,
+                                    @HIS_DEPT_CODE ,
+                                    @HIS_DEPT_NAME ,
+                                    @status)";
+            DbCommand command = ctx.GetSqlStringCommand(sql.ToString());
+
+            SetEntity(message, command, id);
+            SqlDataAccess.ExecuteNonQuery(ctx, command);
+            #endregion
+        }
+        public void UpDateData(string message, string id)
+        {
+            #region 修改
+            string sql1 = @"update dbo.his_doct set 
+                                    DOCT_NAME =@DOCT_NAME,
+                                    HIS_DEPT_CODE =@HIS_DEPT_CODE,
+                                    HIS_DEPT_NAME =@HIS_DEPT_NAME,
+                                    status=@status
+                                where DOCT_CODE=@DOCT_CODE";
+            DbCommand command1 = ctx.GetSqlStringCommand(sql1.ToString());
+
+            SetEntity(message, command1, id);
+            SqlDataAccess.ExecuteNonQuery(ctx, command1);
+            #endregion
+        }
+
+        public void SetEntity(string message, DbCommand command, string id)
+        {
+            string value = string.Empty;
+            OperateXmlUtil xmlHelper = new OperateXmlUtil();
+
+            ctx.AddInParameter(command, "DOCT_CODE", System.Data.DbType.String, id);
+            var valueNode = xmlHelper.XpathRead(message, "//*[name()='healthCarePrincipalPerson']").Item(0);
+
+            foreach (XmlNode xe in valueNode.ChildNodes)
+            {
+                if (xe.Name == "name")
+                {
+                    value = xe.LastChild.LastChild.Attributes["value"].Value;
+                    ctx.AddInParameter(command, "DOCT_NAME", System.Data.DbType.String, value);
+
+                    break;
+                }
+            }
+
+            value = xmlHelper.XpathRead(message, "//*[@root='2.16.156.10011.1.26']", "extension");
+            ctx.AddInParameter(command, "HIS_DEPT_CODE", System.Data.DbType.AnsiString, value);
+
+            valueNode = xmlHelper.XpathRead(message, "//*[name()='affiliatedPrincipalOrganization']").Item(0);
+            foreach (XmlNode xe in valueNode.ChildNodes)
+            {
+                if (xe.Name == "name")
+                {
+                    value = xe.LastChild.LastChild.Attributes["value"].Value;
+                    ctx.AddInParameter(command, "HIS_DEPT_NAME", System.Data.DbType.String, value);
+
+                    break;
+                }
+            }
+            ctx.AddInParameter(command, "status", System.Data.DbType.String, "在用");
+            //ctx.ExecuteNonQuery(command);
+        }
+
+        public int GetDOCT(string DOCT_Code)
+        {
+            var sql = "SELECT count(1) FROM dbo.item_his_original WITH(NOLOCK) WHERE item_code=@item_code";
+            var cmd = ctx.DBGetSqlStringCommand(sql);
+            ctx.AddInParameter(cmd, "item_code", DbType.String, DOCT_Code);
+            var obj = int.Parse(StrHelepr.Obj2StrTrim(ctx.DBExecuteScalar(cmd)));
+            return obj;
+        }
+
+        public void GetStartTime(string ID, out string startTime, out string pageIndex)
+        {
+            string text = "SELECT OtherNo1,OtherNo2 FROM dbo.HL7_Scan WITH(NOLOCK) where ID=@ID";
+            System.Data.Common.DbCommand dbCommand = SqlDataAccess.DBGetSqlStringCommand(this.Scanctx, text);
+            this.Scanctx.AddInParameter(dbCommand, "ID", System.Data.DbType.String, ID);
+            System.Data.DataSet dataSet = this.Scanctx.ExecuteDataSet(dbCommand);
+            startTime = dataSet.Tables[0].Rows[0][0].ToString();
+            pageIndex = (int.Parse(dataSet.Tables[0].Rows[0][1].ToString()) + 1).ToString();
+        }
+
+
+
+
+    }
+
+}

+ 2 - 2
IL.BizComponent/MediII.Adapter.BizComponent.DFP/MediII.Adapter.BizComponent.DFT.csproj

@@ -90,8 +90,8 @@
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
-    <PostBuildEvent>Copy $(TargetDir)   $(ProjectDir)..\..\MessageToKC\UE\
-Copy $(TargetDir)   $(ProjectDir)..\..\MessageToKCServer\UE\</PostBuildEvent>
+    <PostBuildEvent>Copy $(TargetDir)   $(ProjectDir)..\MessageToScan\UE\
+Copy $(TargetDir)   $(ProjectDir)..\MessageToScanServer\UE\</PostBuildEvent>
   </PropertyGroup>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.

+ 2 - 2
IL.BizComponent/MediII.Adapter.BizComponent.DFP/Properties/AssemblyInfo.cs

@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("")]
 [assembly: AssemblyProduct("MediII.Adapter.BizComponent.DFT")]
-[assembly: AssemblyCopyright("Copyright ©  2012")]
+[assembly: AssemblyCopyright("Copyright ©  2023")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
 
@@ -20,7 +20,7 @@ using System.Runtime.InteropServices;
 [assembly: ComVisible(false)]
 
 // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
-[assembly: Guid("ff47b8b9-7d92-43ac-93a8-dcd10d1ff028")]
+[assembly: Guid("ff47b8b9-7d92-43ac-93a8-dcd10d1ff030")]
 
 // 程序集的版本信息由下面四个值组成:
 //

+ 1 - 1
MediII.Adapter.Scan.UE/DefaultDBScanner.cs

@@ -90,7 +90,7 @@ namespace MediII.Adapter.BizComponent.UE
                 if (setLog != null)
                     setLog(new LogModel { Message = "开始一次消息处理扫描 消息类型:" + type });
 
-                if (type == "DFT^B01") //字典解析
+                if (type == "DFT^B03[B01]") //字典解析
                 {
                     var sql = @" SELECT ID,SeqNo,ChartNo,VisitNo,OtherNo1,OtherNo2,OtherNo3,OtherName,TaskType,TaskStatus,
               UpdateUser,UpdateTime,Reserve1,Reserve2,Reserve3,IP,MAC,BeginTime,EndTime,Result,TaskMsg,ResultTime

+ 1 - 1
MediII.Adapter.Scan.UE/HL7_DFT_Scanner.cs

@@ -18,7 +18,7 @@ namespace MediII.Adapter.BizComponent.UE
     {
         protected override string GetMessageType()
         {
-            return "DFT^B01";
+            return "DFT^B03[B01]";
         }
     }
 }

+ 13 - 10
MediII.Adapter.Scan.UE/HL7_TimeTask_Scanner.cs → MediII.Adapter.Scan.UE/HL7_ErrorTask_Scanner.cs

@@ -11,12 +11,14 @@ using IL.Common;
 
 namespace MediII.Adapter.BizComponent.UE
 {
-    public class HL7_TimeOut_Scanner : DBScaner
+    public class HL7_ErrorTask_Scanner : DBScaner
     {
 
         private int TaskRunTime = 5;
 
-        public HL7_TimeOut_Scanner()
+        private int ErrNum = 4;
+
+        public HL7_ErrorTask_Scanner()
         {
 
             var tm = ConfigurationManager.AppSettings["TaskRunTime"];
@@ -24,7 +26,11 @@ namespace MediII.Adapter.BizComponent.UE
             {
                 TaskRunTime = 5;
             }
-
+            var tmp = ConfigurationManager.AppSettings["ErrNum"];
+            if (!int.TryParse(tmp, out ErrNum))
+            {
+                ErrNum = 4;
+            }
         }
 
 
@@ -36,14 +42,11 @@ namespace MediII.Adapter.BizComponent.UE
                         SELECT *   
                         FROM    HL7_Platform.dbo.HL7_Scan with(nolock)
                         WHERE   1 = 1 
-                                AND ( TaskMsg LIKE '%Timeout 时间已到。%'
-                                        OR TaskMsg LIKE '%此操作对该事务的状态无效%'
-                                        OR TaskMsg LIKE '%请重新运行该事务。%' )
-                                AND (ErrNum<4 or ErrNum is null) 
-                                AND TaskStatus = 3
-                                AND OtherNo1 > DATEADD(dy,-{0},getdate()) 
+                                AND  TaskMsg LIKE '%根级别上的数据无效%'
+                                AND (ErrNum<{0} or ErrNum is null) 
+                                AND TaskStatus = 3 
                         ORDER BY SeqNo DESC  ";
-            sql = string.Format(sql, TaskRunTime);//操作中数据
+            sql = string.Format(sql, ErrNum);//操作中数据
             try
             {
                 var listRow = SqlDataAccess.ExecuteSqlStringAccessor<HL7_ScanEntity>(ctx, sql).Take(100).ToList();

+ 5 - 2
MediII.Adapter.Scan.UE/MediII.Adapter.BizComponent.UE.csproj

@@ -90,9 +90,12 @@
     <Compile Include="HL7_A04B02_Scanner.cs" />
     <Compile Include="HL7_A04B01_Scanner.cs" />
     <Compile Include="HL7_A01B01_Scanner.cs" />
-    <Compile Include="HL7_DFT_Scanner.cs" />
     <Compile Include="HL7_A01B02_Scanner.cs" />
-    <Compile Include="HL7_TimeOut_Scanner.cs" />
+    <Compile Include="HL7_DFTEmpty_Scanner.cs" />
+    <Compile Include="HL7_DFT_Scanner.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="HL7_ErrorTask_Scanner.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
   <ItemGroup>