体检系统架构
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

299 lines
16 KiB

#region CopyRight
/****************************************************************
* Project:健康体检信息管理系统(PEIS)
* Author:张剑峰
* CLR Version:4.0.30319.42000
* CreateTime:2023-06-07 5:01:30
* Version:v2.0
*
* Description:
*
* History:
*
*****************************************************************
* Copyright @ 云南新八达科技有限公司 2023 All rights reserved
*****************************************************************/
#endregion CopyRight
using System;
using System.Collections.Generic;
using NPOI.SS.Formula.Functions;
using PEIS.Entity;
using PEIS.Utils;
namespace PEIS.Model.Enrollment
{
public class EnrollmentPatientModel : IModel<EnrollmentPatient>
{
public List<EnrollmentPatient> GetItems()
{
throw new NotImplementedException();
}
public bool UpdateItem(EnrollmentPatient item)
{
string sql = $@"UPDATE ENROLLMENT_PATIENT
SET Name = '{item.Name}',
Sex = '{item.Sex}',
Age = {item.Age},
AgeClass = '{item.AgeClass}',
Nation = '{item.Nation}',
CardType = '{item.CardType}',
CardNo = '{item.CardNo}',
Tel1 = '{item.Tel1}',
Tel2 = '{item.Tel2}',
Contactor1 = '{item.Contactor1}',
Contactor2 = '{item.Contactor2}',
Address1 = '{item.Address1}',
Address2 = '{item.Address2}',
Marriage = '{item.Marriage}',
Education = '{item.Education}',
Occupation = '{item.Occupation}',
Type = '{item.Type}',
Description = '{item.Description}',
ExamDate = '{item.ExamDate}',
Photo = '{item.Photo}',
Company = '{item.Company}'
WHERE ID = {item.ID}";
var baseStr = $@"update base_patient set name = '{item.Name}', Sex = '{item.Sex}', CardType = '{item.CardType}', CardNo = '{item.CardNo}' where ID = {item.PID}";
DAOHelp.ExecuteSql(baseStr, false);
return DAOHelp.ExecuteSql(sql, false) > 0;
}
public List<EnrollmentPatient> GetEnrollmentPatientByEnrollmentOrg(Int64 oeID)
{
return DAOHelp.GetDataBySQL<EnrollmentPatient>($@"Select a.Name,
a.ID,
a.SEX,
CONVERT(VARCHAR,a.Age) + a.AgeClass AgeClass,
b.BirthDay,
a.CardNo,
a.CardType,
b.Marriage,
c.DeptName AS GroupName,
a.SignTime,
a.Tel1,
CASE WHEN a.SignTime IS NULL
THEN NULL
ELSE '已发送'
END AS Signer
from Enrollment_Patient a LEFT JOIN Base_Patient b ON a.PID = b.ID LEFT JOIN Base_OrgPatient c ON c.OID = a.OID AND c.PID = b.ID Where a.OEID = {oeID} order by c.DeptName,a.SignTime");
}
// 记 账
public bool ChargeOrder(Int64 Id, String isAlll)
{
string all = $@"UPDATE Enrollment_CheckCost SET ChargeTime = GETDATE(), ChargerCode = '{Global.currentUser.Code}', Charger = '{Global.currentUser.Name}' WHERE EID = {Id} AND ChargeTime is null AND DeleteTime is null";
string single = $@"UPDATE Enrollment_CheckCost SET ChargeTime = GETDATE(), ChargerCode = '{Global.currentUser.Code}', Charger = '{Global.currentUser.Name}' WHERE ID = {Id} AND ChargeTime is null AND DeleteTime is null";
if (isAlll == "0")
{
return DAOHelp.ExecuteSql(all, false) > 0;
}
else
{
return DAOHelp.ExecuteSql(single, false) > 0;
}
}
// 发送到科室
public bool SendToDept(Int64 EId)
{
var checkCost = $@"UPDATE Enrollment_CheckCost SET SendTime = GETDATE(), SenderCode = '{Global.currentUser.Code}', Sender = '{Global.currentUser.Name}' WHERE EID = {EId} AND SendTime is null AND DeleteTime is null";
var enrollmentPatient = $@"UPDATE Enrollment_Patient SET ExamDate = GETDATE(), SignTime = GETDATE(), SignerCode = '{Global.currentUser.Code}', Signer = '{Global.currentUser.Name}' WHERE ID = {EId} AND SignTime is null";
var enrollmentFeeItem = $@"UPDATE a SET a.IsSend = 1 FROM Enrollment_FeeItem a LEFT JOIN Enrollment_CheckCost b ON a.OrderNO = b.ID AND a.EID = b.EID WHERE b.SendTime IS NOT NULL AND a.EID = {EId}; ";
<<<<<<< HEAD
<<<<<<< HEAD
// 插入常规检查男/女 //同步分检
var normal = $@"EXEC sp_InsertNormalFeeItem {EId};";
// 发送后变更执行科室
var dept = $@"UPDATE Enrollment_FeeItem SET DeptCode = '01411', DeptName = '内科' WHERE KeyNo = '87933664' AND FeeItemCode = 'Z1061' AND EID = {EId};
UPDATE Enrollment_FeeItem SET DeptCode = '01412', DeptName = '外科' WHERE KeyNo = '87933665' AND FeeItemCode = 'Z1062' AND EID = {EId};
UPDATE Enrollment_FeeItem SET DeptCode = '01413', DeptName = '五官科' WHERE KeyNo = '87933667' AND FeeItemCode = 'Z1063' AND EID = {EId};
UPDATE Enrollment_FeeItem SET DeptCode = '01415', DeptName = '口腔科' WHERE KeyNo = '87933670' AND FeeItemCode = 'Z1064' AND EID = {EId};
UPDATE Enrollment_FeeItem SET DeptCode = '01414', DeptName = '一般检查' WHERE KeyNo = '87965917' AND FeeItemCode = 'Z1065' AND EID = {EId};
UPDATE Enrollment_FeeItem SET DeptCode = '01414', DeptName = '一般检查' WHERE KeyNo = '87965918' AND FeeItemCode = 'Z1066' AND EID = {EId}; EXEC sp_SyncExamPart {EId};";
var cResult = DAOHelp.ExecuteSql(checkCost, false);
var eResult = DAOHelp.ExecuteSql(enrollmentPatient, false);
var fResult = DAOHelp.ExecuteSql(enrollmentFeeItem, false);
var nResult = DAOHelp.ExecuteSql(normal);
var dResult = DAOHelp.ExecuteSql(dept);
=======
// 插入分检步骤
var part = $@"EXEC sp_SyncExamPart {EId}";
var cResult = DAOHelp.ExecuteSql(checkCost, false);
var eResult = DAOHelp.ExecuteSql(enrollmentPatient, false);
var fResult = DAOHelp.ExecuteSql(enrollmentFeeItem, false);
var pResult = DAOHelp.ExecuteSql(part);
>>>>>>> 81d9dc6 (1)
=======
// 插入分检步骤
var part = $@"EXEC sp_SyncExamPart {EId}";
var cResult = DAOHelp.ExecuteSql(checkCost, false);
var eResult = DAOHelp.ExecuteSql(enrollmentPatient, false);
var fResult = DAOHelp.ExecuteSql(enrollmentFeeItem, false);
var pResult = DAOHelp.ExecuteSql(part);
>>>>>>> main
return cResult > 0 && eResult > 0 && fResult > 0;
}
// 取消登记
public bool CancelRegInfo(Int64 EId)
{
var feeItem = $@"DELETE FROM Enrollment_FeeItem WHERE EID = {EId}";
var enrollmentPatient = $@"DELETE FROM Enrollment_Patient WHERE ID = {EId}";
var checkCost = $@"UPDATE Enrollment_CheckCost SET DeleteTime = GETDATE(), Deleter = '{Global.currentUser.Name}' WHERE EID = {EId} AND DeleteTime IS NULL";
var fResult = DAOHelp.ExecuteSql(feeItem, false);
var eResult = DAOHelp.ExecuteSql(enrollmentPatient, false);
var cResult = DAOHelp.ExecuteSql(checkCost, false);
return fResult > 0 && eResult > 0;
}
// 删除订单
public bool DeleteOrder(Int64 id)
{
var checkCost = $@"UPDATE Enrollment_CheckCost SET DeleteTime = GETDATE(), Deleter = '{Global.currentUser.Name}' WHERE ID = {id}";
var feeItem = $@"UPDATE Enrollment_FeeItem SET OrderNo = null WHERE OrderNo = {id}";
var cResult = DAOHelp.ExecuteSql(checkCost, false);
var fResult = DAOHelp.ExecuteSql(feeItem, false);
return cResult > 0 && fResult > 0;
}
// 取消记账
public bool CancelCharge(Int64 id)
{
var sql = $@"UPDATE Enrollment_CheckCost SET ChargeTime = null, ChargerCode = null, Charger = null WHERE ID = {id}";
return DAOHelp.ExecuteSql(sql, false) > 0;
}
public List<FeeItem> GetItemsByPack(Int64 id) // 从套餐获取收费项目
{
return DAOHelp.GetDataBySQL<FeeItem>($"Select * From vi_PackFeeItem WHERE PID = {id} ORDER BY ItemClass,UnitName, DeptCode, FeeItemCode");
}
public List<FeeItem> GetFeelItems() // 获取收费项目
{
return DAOHelp.GetDataBySQL<FeeItem>("Select * From vi_FeeItem ORDER BY ItemClass, UnitName, DeptCode, FeeItemCode");
}
public bool RecallDept(Int64 EId) // 撤回发送科室
{
var checkCost = $@"UPDATE Enrollment_CheckCost SET SendTime = null, SenderCode = null, Sender = null WHERE EID = {EId} AND SendTime is not null AND DeleteTime is null AND WeChatCostTime is null";
var enrollmentPatient = $@"UPDATE Enrollment_Patient SET SignTime = null, SignerCode = null, Signer = null WHERE ID = {EId} AND SignTime is not null";
var enrollmentFeeItem = $@"UPDATE a SET a.IsSend = 0 FROM Enrollment_FeeItem a LEFT JOIN Enrollment_CheckCost b ON a.OrderNO = b.ID AND a.EID = b.EID WHERE b.SendTime IS NULL AND a.EID = {EId}";
var cResult = DAOHelp.ExecuteSql(checkCost, false);
var eResult = DAOHelp.ExecuteSql(enrollmentPatient, false);
var fResult = DAOHelp.ExecuteSql(enrollmentFeeItem, false);
return cResult > 0 && eResult > 0 && fResult > 0;
}
public List<EnrollmentPatient> GetEnrollmentPatientRegItems(string begDate, string endDate, string name) // 获取个人体检人员列表
{
if (String.IsNullOrEmpty(name))
{
return DAOHelp.GetDataBySQL<EnrollmentPatient>($@"SELECT
ID,
Sex,
Age,
Name,
Tel1,
AgeClass,
SignTime,
Address1,
Contactor1,
CreateTime,
CASE
WHEN FinishTime IS NOT NULL THEN '3'
WHEN SignTime IS NOT NULL THEN '2'
WHEN SignTime IS NULL THEN '1'
END AS Signer,
FinishTime
FROM
Enrollment_Patient
WHERE
CreateTime BETWEEN '{begDate}'
AND DATEADD( DAY, 1, '{endDate}' )
AND OEID IS NULL
AND PID IS NOT NULL
AND WeChatStatus IN ( 0, 1 )
ORDER BY
CreateTime DESC");
}
else
{
return DAOHelp.GetDataBySQL<EnrollmentPatient>($@"SELECT
ID,
Sex,
Age,
Name,
Tel1,
AgeClass,
SignTime,
Address1,
Contactor1,
CreateTime,
CASE
WHEN FinishTime IS NOT NULL THEN '3'
WHEN SignTime IS NOT NULL THEN '2'
WHEN SignTime IS NULL THEN '1'
END AS Signer,
FinishTime
FROM
Enrollment_Patient
WHERE
( Name like '%{name}%' or id like '%{name}%')
AND OEID IS NULL
AND PID IS NOT NULL
AND WeChatStatus IN ( 0, 1 )
ORDER BY
CreateTime DESC");
}
}
public List<EnrollmentFeeItem> GetItemsByEID(Int64 EId) // 获取体检项目
{
return DAOHelp.GetDataBySQL<EnrollmentFeeItem>($@"SELECT
a.*,
b.IsHide,
c.Address
FROM
[dbo].[Enrollment_FeeItem] a
LEFT JOIN Dict_FeeItem b ON a.KeyNo = b.KeyNo
LEFT JOIN Dict_Dept c ON a.DeptCode = c.HISCode AND a.DeptName = c.Name
WHERE
a.EID = {EId}");
}
public EnrollmentPatient GetEnrollmentPatient(Int64 EId) // 获取个人体检人员信息
{
var item = DAOHelp.GetDataBySQL<EnrollmentPatient>($@"Select * From Enrollment_Patient a LEFT JOIN Base_Patient b ON a.PID = b.ID WHERE a.ID = {EId}");
return item.Count != 0 ? item[0] : null;
}
}
}