|
@@ -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;
|
|
|
+ }
|
|
|
}
|
|
|
}
|