瀏覽代碼

提交最新的互认问题代码

zackhua 8 月之前
父節點
當前提交
1ce7dca151

+ 223 - 5
ZLPlugin_LisPacs_MR/LisPacs_MR_Bll.cs

@@ -2,6 +2,7 @@
 using System;
 using System.Collections.Generic;
 using System.Reflection;
+using ZLPlugin_LisPacs_MR.Domain;
 using ZLPlugin_LisPacs_MR.Domain.Units;
 using ZLPlugin_LisPacs_MR.Model;
 
@@ -159,7 +160,7 @@ namespace ZLPlugin_LisPacs_MR
         /// <param name="ZYID"></param>
         /// <param name="standardItemId"></param>
         /// <returns></returns>
-        public static Recordset GetZYPostJson(long lngPatientID, long ZYID, string no,int type)
+        public static Recordset GetZYPostJson(long lngPatientID, long ZYID, string no,int type, string xgId)
         {
             string sql = @"Select distinct  a.姓名 ""PatientName"",
                                     b.身份证号 ""PatientIdCard"",
@@ -173,13 +174,91 @@ namespace ZLPlugin_LisPacs_MR
                                     '{2}' ""standardItemId"",
                                     '' ""reportStartTime"",
                                     '' ""reportEndTime"",
-                                    '{3}' ""hrType""
+                                    '{3}' ""hrType"",
+                                    sysdate ""applyTime"",
+                                    '{4}' ""hisApplyCode"",
+                                    '2'' ""patientType"",
+,
+                                    (Select sum(B.收费数量 *
+                                        Decode(C.是否变价, 1, Sum(D.缺省价格), Sum(D.现价)))   
+                                    From 病人医嘱记录 A,
+                                        (Select *
+                                            From (Select C.诊疗项目ID,
+                                                        C.收费项目ID,
+                                                        C.检查部位,
+                                                        C.检查方法,
+                                                        C.费用性质,
+                                                        C.收费数量,
+                                                        C.固有对照,
+                                                        C.从属项目,
+                                                        C.收费方式,
+                                                        C.适用科室id,
+                                                        Max(Nvl(c.适用科室id, 0)) Over(Partition By c.诊疗项目id, c.检查部位, c.检查方法, c.费用性质) As Top
+                                                    From 诊疗收费关系 C, 病人医嘱记录 A
+                                                    Where (A.ID = {4} Or A.相关ID ={4})
+                                                    And A.诊疗项目ID + 0 = C.诊疗项目ID
+                                                    And (a.相关id Is Null And a.执行标记 In (1, 2) And c.费用性质 = 1 Or
+                                                        a.标本部位 = c.检查部位 And a.检查方法 = c.检查方法 And
+                                                        Nvl(c.费用性质, 0) = 0 Or
+                                                        (a.检查方法 Is Null or a.诊疗类别 = 'E' And Exists
+                                                        (Select 1
+                                                            From 诊疗项目目录 Z
+                                                            Where Z.id = a.诊疗项目ID
+                                                                And Z.操作类型 = '4')) And Nvl(c.费用性质, 0) = 0 And
+                                                        c.检查部位 Is Null And c.检查方法 Is Null)
+                                                    And (C.适用科室ID is Null or
+                                                        C.适用科室ID = A.执行科室ID And C.病人来源 = 1))
+                                            Where Nvl(适用科室id, 0) = Top) B,
+                                        收费项目目录 C,
+                                        收费价目 D
+                                    Where A.诊疗类别 Not IN ('4', '5', '6', '7')
+                                    And A.医嘱状态 IN (-1, 1, 2)
+                                    And A.诊疗项目ID + 0 = B.诊疗项目ID
+                                    And D.价格等级 is Null
+                                    And (A.相关ID is Null And A.执行标记 IN (1, 2) And B.费用性质 = 1 Or
+                                        A.标本部位 = B.检查部位 And A.检查方法 = B.检查方法 And Nvl(B.费用性质, 0) = 0 Or
+                                        (A.检查方法 is Null or a.诊疗类别 = 'E' And Exists
+                                        (Select 1
+                                            From 诊疗项目目录 Z
+                                            Where Z.id = a.诊疗项目ID
+                                                And Z.操作类型 = '4')) And Nvl(B.费用性质, 0) = 0 And B.检查部位 is Null And
+                                        B.检查方法 is Null)
+                                    And Nvl(A.计价特性, 0) = 0
+                                    And Nvl(A.执行性质, 0) Not IN (0, 5)
+                                    And B.收费项目ID = C.ID
+                                    And B.收费项目ID = D.收费细目ID
+                                    And ((Sysdate Between D.执行日期 and D.终止日期) or
+                                        (Sysdate >= D.执行日期 And D.终止日期 is NULL))
+                                    And (C.撤档时间 is NULL Or C.撤档时间 = To_Date('3000-01-01', 'YYYY-MM-DD'))
+                                    And C.服务对象 IN (1, 3)
+                                    And (Nvl(B.收费方式, 0) = 1 And C.类别 = '4' And B.收费项目ID = '0' Or
+                                        Not (Nvl(B.收费方式, 0) = 1 And C.类别 = '4' And '0' <> 0))
+                                    And (C.站点 = '-' Or C.站点 is Null)
+                                    And (A.ID = {4} Or A.相关ID = {4})
+                                    Group by A.ID,
+                                            A.相关ID,
+                                            A.序号,
+                                            A.诊疗类别,
+                                            A.诊疗项目ID,
+                                            A.标本部位,
+                                            A.检查方法,
+                                            A.执行标记,
+                                            Nvl(B.费用性质, 0),
+                                            Nvl(B.收费方式, 0),
+                                            B.收费项目ID,
+                                            C.计算单位,
+                                            B.收费数量,
+                                            C.是否变价,
+                                            A.执行科室ID,
+                                            Nvl(B.从属项目, 0)
+
+                                            ) ""totalAmount""
                                     From 病案主页 a,病人信息 b, 人员表 c,部门表 d,ZLLPMR.互认配置表 e
                                     Where b.病人id = a.病人id
                                     And c.姓名 = a.住院医师
                                     And d.Id = a.入院科室id
                                     And a.病人id = {0} And a.主页id = {1}";
-            sql = string.Format(sql, lngPatientID, ZYID, no,type);
+            sql = string.Format(sql, lngPatientID, ZYID, no,type,xgId);
             Recordset rd = new Recordset();
             Tools.QueryTable(sql, out rd);
             return rd;
@@ -191,7 +270,7 @@ namespace ZLPlugin_LisPacs_MR
         /// <param name="ZYID"></param>
         /// <param name="standardItemId"></param>
         /// <returns></returns>
-        public static Recordset GetMZPostJson(long ZYID, string no,int type)
+        public static Recordset GetMZPostJson(long ZYID, string no,int type, string xgId)
         {
             string sql = @"Select distinct a.姓名 ""PatientName"",
                                     b.身份证号 ""PatientIdCard"",
@@ -205,7 +284,85 @@ namespace ZLPlugin_LisPacs_MR
                                     '{1}' ""standardItemId"",
                                     '' ""reportStartTime"",
                                     '' ""reportEndTime"",
-                                    '{2}' ""hrType""
+                                    '{2}' ""hrType"",
+                                    sysdate ""applyTime"",
+                                    '{3}' ""hisApplyCode"",
+                                    '1'' ""patientType"",
+,
+                                    (Select sum(B.收费数量 *
+                                        Decode(C.是否变价, 1, Sum(D.缺省价格), Sum(D.现价)))   
+                                    From 病人医嘱记录 A,
+                                        (Select *
+                                            From (Select C.诊疗项目ID,
+                                                        C.收费项目ID,
+                                                        C.检查部位,
+                                                        C.检查方法,
+                                                        C.费用性质,
+                                                        C.收费数量,
+                                                        C.固有对照,
+                                                        C.从属项目,
+                                                        C.收费方式,
+                                                        C.适用科室id,
+                                                        Max(Nvl(c.适用科室id, 0)) Over(Partition By c.诊疗项目id, c.检查部位, c.检查方法, c.费用性质) As Top
+                                                    From 诊疗收费关系 C, 病人医嘱记录 A
+                                                    Where (A.ID = {3} Or A.相关ID = {3})
+                                                    And A.诊疗项目ID + 0 = C.诊疗项目ID
+                                                    And (a.相关id Is Null And a.执行标记 In (1, 2) And c.费用性质 = 1 Or
+                                                        a.标本部位 = c.检查部位 And a.检查方法 = c.检查方法 And
+                                                        Nvl(c.费用性质, 0) = 0 Or
+                                                        (a.检查方法 Is Null or a.诊疗类别 = 'E' And Exists
+                                                        (Select 1
+                                                            From 诊疗项目目录 Z
+                                                            Where Z.id = a.诊疗项目ID
+                                                                And Z.操作类型 = '4')) And Nvl(c.费用性质, 0) = 0 And
+                                                        c.检查部位 Is Null And c.检查方法 Is Null)
+                                                    And (C.适用科室ID is Null or
+                                                        C.适用科室ID = A.执行科室ID And C.病人来源 = 1))
+                                            Where Nvl(适用科室id, 0) = Top) B,
+                                        收费项目目录 C,
+                                        收费价目 D
+                                    Where A.诊疗类别 Not IN ('4', '5', '6', '7')
+                                    And A.医嘱状态 IN (-1, 1, 2)
+                                    And A.诊疗项目ID + 0 = B.诊疗项目ID
+                                    And D.价格等级 is Null
+                                    And (A.相关ID is Null And A.执行标记 IN (1, 2) And B.费用性质 = 1 Or
+                                        A.标本部位 = B.检查部位 And A.检查方法 = B.检查方法 And Nvl(B.费用性质, 0) = 0 Or
+                                        (A.检查方法 is Null or a.诊疗类别 = 'E' And Exists
+                                        (Select 1
+                                            From 诊疗项目目录 Z
+                                            Where Z.id = a.诊疗项目ID
+                                                And Z.操作类型 = '4')) And Nvl(B.费用性质, 0) = 0 And B.检查部位 is Null And
+                                        B.检查方法 is Null)
+                                    And Nvl(A.计价特性, 0) = 0
+                                    And Nvl(A.执行性质, 0) Not IN (0, 5)
+                                    And B.收费项目ID = C.ID
+                                    And B.收费项目ID = D.收费细目ID
+                                    And ((Sysdate Between D.执行日期 and D.终止日期) or
+                                        (Sysdate >= D.执行日期 And D.终止日期 is NULL))
+                                    And (C.撤档时间 is NULL Or C.撤档时间 = To_Date('3000-01-01', 'YYYY-MM-DD'))
+                                    And C.服务对象 IN (1, 3)
+                                    And (Nvl(B.收费方式, 0) = 1 And C.类别 = '4' And B.收费项目ID = '0' Or
+                                        Not (Nvl(B.收费方式, 0) = 1 And C.类别 = '4' And '0' <> 0))
+                                    And (C.站点 = '-' Or C.站点 is Null)
+                                    And (A.ID = {3} Or A.相关ID = {3})
+                                    Group by A.ID,
+                                            A.相关ID,
+                                            A.序号,
+                                            A.诊疗类别,
+                                            A.诊疗项目ID,
+                                            A.标本部位,
+                                            A.检查方法,
+                                            A.执行标记,
+                                            Nvl(B.费用性质, 0),
+                                            Nvl(B.收费方式, 0),
+                                            B.收费项目ID,
+                                            C.计算单位,
+                                            B.收费数量,
+                                            C.是否变价,
+                                            A.执行科室ID,
+                                            Nvl(B.从属项目, 0)
+
+                                            ) ""totalAmount""
                                     From 病人挂号记录 a,病人信息 b, 人员表 c,部门表 d,ZLLPMR.互认配置表 e
                                     Where b.病人id = a.病人id
                                     And c.姓名 = a.执行人
@@ -597,5 +754,66 @@ namespace ZLPlugin_LisPacs_MR
            Log.Info("resultString==" + resultString);
 
         }
+
+
+
+        public List<BillProjectUpload> GetBillProjects(long lngSendID,string hostName,string patientId)
+        {
+
+            List<BillProjectUpload> billList =   new List<BillProjectUpload>();
+            List<YZData> list = GetYZList(lngSendID);
+            for (var i = 0; i < list.Count; i++)
+            {
+                if (list[i].诊疗类别 == "C" && list[i].相关ID != "0.0")
+                {
+                    string code = "";
+                    int total = 0;
+                    IsLisProject(list[i].诊疗项目ID, out code, out total);
+                    if (total > 0)
+                    {
+                        //进来才说明是互认项目
+                        BillProjectUpload billProject = new BillProjectUpload();
+                        billProject.billProjectName = list[i].医嘱内容;
+                        billProject.billName = list[i].开嘱医生;
+                        billProject.billTime = DateTime.Now.ToString("yyyy-MM-DD HH:mm:ss");
+                        billProject.billType = "C";
+                        billProject.computerName = hostName;
+                        billProject.patientId = patientId;
+                        billProject.medicId = list[i].ID;
+                        billList.Add(billProject);
+                    }
+                }
+                else if (list[i].诊疗类别 == "D" && list[i].相关ID != "0.0")
+                {
+                    
+                    int total = 0;
+                    string type = "";
+                    
+                    String param = list[i].诊疗项目ID + "_" + list[i].标本部位 + "_" + list[i].检查方法;
+                    IsPacsProject(param, out total, out type);
+                    if (total > 0)
+                    {
+                        //进来才说明是互认项目
+                        BillProjectUpload billProject = new BillProjectUpload();
+                        billProject.billProjectName = list[i].医嘱内容;
+                        billProject.billName = Infos.UserInfo.编号;
+                        billProject.billTime = DateTime.Now.ToString("yyyy-MM-DD HH:mm:ss");
+                        billProject.billType = "D";
+                        billProject.computerName = hostName;
+                        billProject.patientId = patientId;
+                        billProject.medicId = list[i].ID;
+                        billList.Add(billProject);
+                    }
+
+                }
+            }
+
+            if(billList.Count>0)
+            {
+                //保存开单数据
+            }
+
+            return billList;
+        }
     }
 }

+ 18 - 0
ZLPlugin_LisPacs_MR/Model/BillProjectUpload.cs

@@ -0,0 +1,18 @@
+
+namespace ZLPlugin_LisPacs_MR.Model
+{
+    public class BillProjectUpload
+    {
+
+        public string applyTime { get; set; } 
+        public string computerName { get; set; }  //计算机名称
+        public string patientId { get; set; } // 病人id
+        public string billProjectName { get; set; } //开单项目名称
+        public string billTime { get; set; } //开单时间
+        public string billType { get; set; } //开单类别
+        public string billName { get; set; } //开单人
+        public string medicId { get; set; } //医嘱id
+
+
+    }
+}

+ 9 - 1
ZLPlugin_LisPacs_MR/Tools.cs

@@ -151,7 +151,15 @@ namespace ZLPlugin_LisPacs_MR
                         }
                         else
                         {
-                            value += "\"" + rd.Fields[j].Name + "\":\"" + rd.Fields[j].Value + "\",";
+                            if (rd.Fields[j].Name== "附项")
+                            {
+                                value += "\"" + rd.Fields[j].Name + "\":null,";
+
+                            }
+                            else
+                            {
+                                value += "\"" + rd.Fields[j].Name + "\":\"" + rd.Fields[j].Value + "\",";
+                            }
                         }
 
                     }

+ 13 - 2
ZLPlugin_LisPacs_MR/clsPlugin.cs

@@ -42,6 +42,8 @@ using ADODB;
 using ZLPlugin_LisPacs_MR.Domain.Units;
 using ZLPlugin_LisPacs_MR.Model;
 using System.Windows.Forms;
+using System.Net;
+using ZLPlugin_LisPacs_MR.Domain;
 
 namespace ZLPlugin_LisPacs_MR
 {
@@ -67,6 +69,7 @@ namespace ZLPlugin_LisPacs_MR
             //注意事项:因会重复触发,经测试定义的类变量进入时重复定义类变量,标记的static变量不会出现问题,建议:
             // 1. 需要定义到类内部的全局变量,使用静态变量static;
             // 2. 需要使用的静态变量初始化,放入下方初始化操作中,以避免重复调用 
+            
             Log.Info("IsInit=="+ IsInit);
             if (!IsInit)
             {
@@ -79,6 +82,9 @@ namespace ZLPlugin_LisPacs_MR
                 IsInit = true;
             }
             Log.Info("  IsInit  end==");
+            Log.Info("Dns.GetHostName();==" + Dns.GetHostName());
+            Log.Info("id==" + Infos.UserInfo.ID);
+            Log.Info("编号==" + Infos.UserInfo.编号);
 
         }
         public void LogOutBefore()
@@ -100,6 +106,8 @@ namespace ZLPlugin_LisPacs_MR
             Log.Info("AdviceSend   lngModual == "+ lngModual);
             if (lngModual == 1254)
             {
+
+                //这里 触发开单记录
                 return true;
             }
             SocketClient clientSend = new SocketClient("127.0.0.1", 6061);
@@ -260,13 +268,16 @@ namespace ZLPlugin_LisPacs_MR
                 {
                     hrType = 2;
                 }
+
+                string xgId = listlis[0].id;
+
                 if (lngModual == 1253)//住院
                 {
-                    rd = LisPacs_MR_Bll.GetZYPostJson(lngPatientID, lngClinicID, code, hrType);
+                    rd = LisPacs_MR_Bll.GetZYPostJson(lngPatientID, lngClinicID, code, hrType, xgId);
                 }
                 else
                 {
-                    rd = LisPacs_MR_Bll.GetMZPostJson(lngClinicID, code, hrType);
+                    rd = LisPacs_MR_Bll.GetMZPostJson(lngClinicID, code, hrType, xgId);
                 }
                 //SocketClient client = new SocketClient("127.0.0.1", 6061);
                 //Results result = new Results();