Ver Fonte

开单项目合单功能解决代码提交

zzh_love há 7 meses atrás
pai
commit
e301e8de63
2 ficheiros alterados com 86 adições e 46 exclusões
  1. 43 12
      ZLPlugin_LisPacs_MR/LisPacs_MR_Bll.cs
  2. 43 34
      ZLPlugin_LisPacs_MR/clsPlugin.cs

+ 43 - 12
ZLPlugin_LisPacs_MR/LisPacs_MR_Bll.cs

@@ -97,13 +97,10 @@ namespace ZLPlugin_LisPacs_MR
         /// </summary>
         /// <param name="rsAdvice"></param>
         /// <returns></returns>
-        public static void GetTreatmentId(List<YZData> list,out string codeNo,out List<Codes> listlis, out List<Codes> listPacs)
+        public static void GetTreatmentId(List<YZData> list,out string codeNo,out List<Codes> listlis, out List<Codes> listPacs,out string billProjectNames)
         {
-            //lis = "";
-            //lis_id = "";
-            //pacs = "";
-            //pacs_id = "";
             codeNo = "";
+            billProjectNames = "";
             listlis = new List<Codes>();
             listPacs = new List<Codes>();
             for (var i = 0; i < list.Count; i++)
@@ -128,6 +125,7 @@ namespace ZLPlugin_LisPacs_MR
                         //lis += list[i].诊疗项目ID + ",";
                         //lis_id += list[i].ID + ",";
                         codeNo += code + "#";
+                        billProjectNames += list[i].医嘱内容 + "、";
                     }
 
                 }
@@ -155,12 +153,14 @@ namespace ZLPlugin_LisPacs_MR
                         codes.doctorName = list[i].开嘱医生;
                         listPacs.Add(codes);
                         codeNo += type + "#";
+                        billProjectNames += list[i].医嘱内容 + "、";
                     }
 
                 }
             }
             //lis = lis.Length > 0 ? lis.Substring(0, lis.Length - 1) : lis;
             codeNo = codeNo.Length > 0 ? codeNo.Substring(0, codeNo.Length - 1) : codeNo;
+            billProjectNames = billProjectNames.Length > 0 ? billProjectNames.Substring(0, billProjectNames.Length - 1) : billProjectNames;
             //pacs = pacs.Length > 0 ? pacs.Substring(0, pacs.Length - 1) : pacs;
             //lis_id = lis_id.Length > 0 ? lis_id.Substring(0, lis_id.Length - 1) : lis_id;
             //pacs_id = pacs_id.Length > 0 ? pacs_id.Substring(0, pacs_id.Length - 1) : pacs_id;
@@ -256,7 +256,7 @@ namespace ZLPlugin_LisPacs_MR
         }
 
 
-        public static string GetTotalPriceForLisByZLXM(string zlxmid)
+        public static decimal GetTotalPriceForLisByZLXM(string zlxmid)
         {
             string sql = @"Select nvl(sum(现价),'0') 金额 from 收费价目 where  终止日期 > sysdate  and 收费细目id in (select 收费项目id from 诊疗收费关系 where 诊疗项目id = {0} )";
             sql = string.Format(sql, zlxmid);
@@ -266,9 +266,38 @@ namespace ZLPlugin_LisPacs_MR
             if (!rd.EOF)
             {
                 rd.MoveFirst();
-                return rd.Fields["金额"].Value.ToString();
+                decimal amount = Convert.ToDecimal(rd.Fields["金额"].Value.ToString());
+                return amount;
+            }
+            return 0;
+        }
+
+        public static decimal GetTotalPriceForLisByZlxmIds(string zlxmids)
+        {
+            string sql = @"Select nvl(sum(现价),'0') 金额 from 收费价目 where  终止日期 > sysdate  and 收费细目id in (select 收费项目id from 诊疗收费关系 where 诊疗项目id in ({0}) )";
+            sql = string.Format(sql, zlxmids);
+            Log.Info("GetTotalPriceForLisByZLXM==" + sql);
+            Recordset rd = new Recordset();
+            Tools.QueryTable(sql, out rd);
+            if (!rd.EOF)
+            {
+                rd.MoveFirst();
+                decimal amount = Convert.ToDecimal(rd.Fields["金额"].Value.ToString());
+                return amount;
+            }
+            return 0;
+        }
+
+
+        //获取诊疗项目id
+        public static string GetZlxmIdFromList(List<Codes> list)
+        {
+            string zlxmids="";
+            for (var i = 0; i < list.Count; i++)
+            {
+                zlxmids += list[i].zlxmid + ",";
             }
-            return "0";
+            return zlxmids;
         }
 
         /// <summary>
@@ -278,9 +307,9 @@ namespace ZLPlugin_LisPacs_MR
         /// <param name="zlksid"> 执行科室id</param>
         /// <param name="part"> 部位</param>
         /// <param name="method"> 方法</param>
-        /// <param name="patientResource"> 病人来源   门诊  1  还是住院  2   0 所有</param>
+        /// <param name="patientResource"> 病人来源   门诊  1  还是住院  2   0  这里区分 不等于1  或者不等于 2  所有</param>
         /// <returns></returns>
-        public static string GetTotalPriceForPacsByZLXM(string zlxmid,string zlksid ,string part,string method, int patientResource)
+        public static decimal GetTotalPriceForPacsByZLXM(string zlxmid,string zlksid ,string part,string method, int patientResource)
         {
             string sql = @"select nvl(sum(a.现价* b.收费数量),'0') 金额 from 收费价目 a,(
                     select * from 诊疗收费关系  where 诊疗项目id = {0} and ( 适用科室id  is null or  适用科室id = {1} )and 检查部位 = '{2}' and 检查方法 = '{3}'  and 病人来源 <> {4}
@@ -294,9 +323,11 @@ namespace ZLPlugin_LisPacs_MR
             if (!rd.EOF)
             {
                 rd.MoveFirst();
-                return rd.Fields["金额"].Value.ToString();
+
+                decimal amount = Convert.ToDecimal(rd.Fields["金额"].Value.ToString());
+                return amount;
             }
-            return "0";
+            return 0;
         }
 
 

+ 43 - 34
ZLPlugin_LisPacs_MR/clsPlugin.cs

@@ -118,9 +118,10 @@ namespace ZLPlugin_LisPacs_MR
                 }
                 List<YZData> ss_list = LisPacs_MR_Bll.GetYZList(lngSendID);
                 string code = "";
+                string billProjectName = "";
                 List<Codes> listlis;
                 List<Codes> listpacs;
-                LisPacs_MR_Bll.GetTreatmentId(ss_list, out code, out listlis, out listpacs);
+                LisPacs_MR_Bll.GetTreatmentId(ss_list, out code, out listlis, out listpacs,out billProjectName);
                 int hrType = 0;
                 if (listlis.Count == 0 && listpacs.Count == 0)
                 {
@@ -136,8 +137,7 @@ namespace ZLPlugin_LisPacs_MR
                 }
                 Log.Info("一共几条开单项目:" + listlis.Count);
                 Log.Info("一共几条开单项目:" + listpacs.Count);
-                
-                foreach (var item in listlis)
+                /*foreach (var item in listlis)
                 {
                     //这里 触发开单记录   获取计算机名   患者id  开单项目  开单时间  发送号   计算机ip  单据号   备注(医嘱id)  类别  开单人   是否作废
                     int ii = LisPacs_MR_Bll.InsertHuRenBillProject(Dns.GetHostName(), lngPatientID,item.yzContent,lngSendID, Tools.GetHostIp(),"", item.id,"C",Infos.UserInfo.用户名);
@@ -146,7 +146,7 @@ namespace ZLPlugin_LisPacs_MR
                 {
                     //这里 触发开单记录   获取计算机名   患者id  开单项目  开单时间  发送号   计算机ip  单据号   备注(医嘱id)  类别  开单人   是否作废
                     LisPacs_MR_Bll.InsertHuRenBillProject(Dns.GetHostName(), lngPatientID, item.yzContent, lngSendID, Tools.GetHostIp(), "", item.id, "D", Infos.UserInfo.用户名);
-                }
+                }*/
                 // 1254 是住院发送 
                 if (lngModual == 1254  || lngModual == 1252)
                 {
@@ -156,8 +156,8 @@ namespace ZLPlugin_LisPacs_MR
                 }
                 string yzid = listlis[0].yzid;
                 string xgid = listlis[0].id;
-                string totalPrice = LisPacs_MR_Bll.GetTotalPriceForLisByZLXM(yzid);
-                Recordset rd = LisPacs_MR_Bll.GetMZPostJson(lngClinicID, code, hrType, totalPrice, xgid);
+                decimal totalPrice = LisPacs_MR_Bll.GetTotalPriceForLisByZLXM(yzid);
+                Recordset rd = LisPacs_MR_Bll.GetMZPostJson(lngClinicID, code, hrType, totalPrice.ToString(), code);
                 string json = Tools.RecordsetToJson(rd);
                 clientSend.Send(json);
                 //Tools.Delay(10000, 0);
@@ -267,18 +267,15 @@ namespace ZLPlugin_LisPacs_MR
                       }
                     #endregion
                 }*/
-                string code = "";
+                string code = "";  // 又算开单唯一id
+                string billProjectNames = "";  //开单项目名称
                 List<Codes> listlis;
                 List<Codes> listpacs;
-                LisPacs_MR_Bll.GetTreatmentId(ss_list, out code, out listlis, out listpacs);
+                LisPacs_MR_Bll.GetTreatmentId(ss_list, out code, out listlis, out listpacs,out billProjectNames);
                 Log.Info("code=="+code);
                 Recordset rd = new Recordset();
-                string xgid ="";
-                string yzid ="";
-                string zlxmid = "";
-                string totalPrice = "0";
+                decimal totalPrice = 0;
                 int hrType = 0;
-                string hisApplyCode = ""; // 开单唯一id
                 if (listlis.Count == 0 && listpacs.Count == 0)
                 {
                     return true;
@@ -286,18 +283,10 @@ namespace ZLPlugin_LisPacs_MR
                 else if (listlis.Count > 0 && listpacs.Count == 0)//只有检验
                 {
                     hrType = 1;
-                    yzid = listlis[0].yzid;
-                    xgid = listlis[0].id;
-                    zlxmid = listlis[0].zlxmid;
-                    hisApplyCode = xgid;
                 }
                 else if (listpacs.Count > 0 && listlis.Count == 0)//只有检查
                 {
                     hrType = 2;
-                    yzid = listpacs[0].yzid;
-                    xgid = listpacs[0].id;
-                    zlxmid = listpacs[0].zlxmid;
-                    hisApplyCode = xgid;
                 }
                 Log.Info("listpacs.Count"+ listpacs.Count);
                 Log.Info("listlis.Count" + listlis.Count);
@@ -306,44 +295,58 @@ namespace ZLPlugin_LisPacs_MR
                 {
                     if (hrType==1)
                     {
-                        totalPrice = LisPacs_MR_Bll.GetTotalPriceForLisByZLXM(zlxmid);
+                        totalPrice = LisPacs_MR_Bll.GetTotalPriceForLisByZlxmIds(LisPacs_MR_Bll.GetZlxmIdFromList(listlis)) ;// 获取总金额
+                       // totalPrice = LisPacs_MR_Bll.GetTotalPriceForLisByZLXM(zlxmid);
                     }
                     else if(hrType == 2)
                     {
-
-                        totalPrice = LisPacs_MR_Bll.GetTotalPriceForPacsByZLXM(zlxmid, listpacs[0].zxksid, listpacs[0].part, listpacs[0].method,1);
+                        for (var ii = 0; ii < listpacs.Count; ii++)
+                        {
+                            totalPrice += LisPacs_MR_Bll.GetTotalPriceForPacsByZLXM(listpacs[ii].zlxmid, listpacs[ii].zxksid, listpacs[ii].part, listpacs[ii].method, 1);
+                        }
+                        //totalPrice = LisPacs_MR_Bll.GetTotalPriceForPacsByZLXM(zlxmid, listpacs[0].zxksid, listpacs[0].part, listpacs[0].method,1);
                     }
                     else
                     {
                         //获取合单之后 同时有检查和检验  的开单项目唯一id  以及金额
+                        totalPrice = LisPacs_MR_Bll.GetTotalPriceForLisByZlxmIds(LisPacs_MR_Bll.GetZlxmIdFromList(listlis));// 获取总金额
+                        for (var ii = 0; ii < listpacs.Count; ii++)
+                        {
 
-
+                            totalPrice += LisPacs_MR_Bll.GetTotalPriceForPacsByZLXM(listpacs[ii].zlxmid, listpacs[ii].zxksid, listpacs[ii].part, listpacs[ii].method, 1);
+                        }
                     }
-                     
-                    rd = LisPacs_MR_Bll.GetZYPostJson(lngPatientID, lngClinicID, code, hrType, totalPrice, xgid);
+                    rd = LisPacs_MR_Bll.GetZYPostJson(lngPatientID, lngClinicID, code, hrType, totalPrice.ToString(), code);
                 }
                 else
                 {
                     if (hrType == 1)
                     {
-                        totalPrice = LisPacs_MR_Bll.GetTotalPriceForLisByZLXM(zlxmid);
+                        totalPrice = LisPacs_MR_Bll.GetTotalPriceForLisByZlxmIds(LisPacs_MR_Bll.GetZlxmIdFromList(listlis));// 获取总金额
+                        //totalPrice = LisPacs_MR_Bll.GetTotalPriceForLisByZLXM(zlxmid);
                     }
                     else if (hrType == 2)
                     {
-                        totalPrice = LisPacs_MR_Bll.GetTotalPriceForPacsByZLXM(zlxmid, listpacs[0].zxksid, listpacs[0].part, listpacs[0].method, 2);
+                        for (var ii = 0; ii < listpacs.Count; ii++)
+                        {
+                            totalPrice += LisPacs_MR_Bll.GetTotalPriceForPacsByZLXM(listpacs[ii].zlxmid, listpacs[ii].zxksid, listpacs[ii].part, listpacs[ii].method, 2);
+                        }
+                       // totalPrice = LisPacs_MR_Bll.GetTotalPriceForPacsByZLXM(zlxmid, listpacs[0].zxksid, listpacs[0].part, listpacs[0].method, 2);
                     }
                     else
                     {
                         //获取合单之后 同时有检查和检验  的开单项目唯一id  以及金额
-
-
+                        totalPrice = LisPacs_MR_Bll.GetTotalPriceForLisByZlxmIds(LisPacs_MR_Bll.GetZlxmIdFromList(listlis));// 获取总金额
+                        for (var ii = 0; ii < listpacs.Count; ii++)
+                        {
+                            totalPrice += LisPacs_MR_Bll.GetTotalPriceForPacsByZLXM(listpacs[ii].zlxmid, listpacs[ii].zxksid, listpacs[ii].part, listpacs[ii].method, 1);
+                        }
                     }
-                    rd = LisPacs_MR_Bll.GetMZPostJson(lngClinicID, code, hrType, totalPrice, xgid);
+                    rd = LisPacs_MR_Bll.GetMZPostJson(lngClinicID, code, hrType, totalPrice.ToString(), code);
                 }
                 //SocketClient client = new SocketClient("127.0.0.1", 6061);
                 //Results result = new Results();
                 string json = Tools.RecordsetToJson(rd);
-
                 Log.Info("save发送json ===" + json);
                 socketClient.Send(json);
                 //Tools.Delay(waittingdate, 0);
@@ -388,6 +391,11 @@ namespace ZLPlugin_LisPacs_MR
                         Log.Info("2:" + SocketClient.Message);
                         SaveData(waittingdate, lngPatientID, lngClinicID, listlis, listpacs, -1);
                         socketClient.Close();
+
+                            //保存开单项目
+                        
+                        int ii = LisPacs_MR_Bll.InsertHuRenBillProject(Dns.GetHostName(), lngPatientID, billProjectNames, 999, Tools.GetHostIp(), Infos.UserInfo.编号, code, hrType.ToString(), Infos.UserInfo.用户名);
+                        Log.Info("开单状态="+ ii);
                         return true;
                     }
                     else if (rex.ResultCode == -1)//互认引用失败
@@ -400,9 +408,10 @@ namespace ZLPlugin_LisPacs_MR
                     {
                         MessageBox.Show(rex.ResultText.ToString(), "中联软件", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                         socketClient.Close();
+                        int ii = LisPacs_MR_Bll.InsertHuRenBillProject(Dns.GetHostName(), lngPatientID, billProjectNames, 999, Tools.GetHostIp(), Infos.UserInfo.编号, code, hrType.ToString(), Infos.UserInfo.用户名);
+                        Log.Info("开单状态=" + ii);
                         return true;//此病人不存在互认信息
                     }
-
                 }
                 Log.Info("失败" + SocketClient.Message);
                 socketClient.Close();