AIMS/AIMS/OperationDoing/AnasRecordBill/FillAnasReordBill.cs
2022-09-20 22:47:29 +08:00

314 lines
18 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using AIMSBLL;
using DrawGraph;
using HelperDB;
using System;
using System.Data;
namespace AIMS.OperationDoing.AnasRecordBill
{
public class FillAnasReordBill
{
public static OperationRecord getRecord(OperationRecord _record, int PatientId, int RecoverId)
{
if (_record == null) _record = new OperationRecord();
if (PatientId == -1)
{
return _record;
}
Model.TitleTime TitleTime = BLL.OperationRecord.GetTitleTime(PatientId, RecoverId);
_record.PatientId = PatientId;
_record.OperationApplyId = TitleTime.OperationApplyId;
_record.InRoomTime = TitleTime.InRoomTime;
_record.OperationBeginTime = TitleTime.OperationBeginTime;
_record.OperationEndTime = TitleTime.OperationEndTime;
_record.OutRoomTime = TitleTime.OutRoomTime;
DataTable OperationFrontdt = OperationFront.BLL.OperationApply.GetOperationFrontDataTableByPatientId(PatientId);
if (OperationFrontdt.Rows.Count > 0)
{
_record.DepartmentId = int.Parse( OperationFrontdt.Rows[0]["DepartmentId"].ToString());
_record.ApplyDepartmentName = OperationFrontdt.Rows[0]["ApplyDepName"].ToString() + " " + OperationFrontdt.Rows[0]["SickBed"].ToString();
_record.ApplyDepName = OperationFrontdt.Rows[0]["ApplyDepName"].ToString() ;
_record.EndemicArea = OperationFrontdt.Rows[0]["Illdistrict"].ToString();
_record.Bed = OperationFrontdt.Rows[0]["SickBed"].ToString();
_record.InHospitalNo = OperationFrontdt.Rows[0]["MdrecNo"].ToString();
_record.MedicalHistoryNo = OperationFrontdt.Rows[0]["ArchivesNo"].ToString();
_record.Name = OperationFrontdt.Rows[0]["PatientName"].ToString();
_record.Sex = OperationFrontdt.Rows[0]["Sex"].ToString();
_record.Age = AIMSExtension.PublicMethod.GetAge(DateTime.Parse(OperationFrontdt.Rows[0]["BirthDay"].ToString()));
if (OperationFrontdt.Rows[0]["Height"].ToString() != "")
_record.Height = double.Parse(OperationFrontdt.Rows[0]["Height"].ToString()).ToString();
if (OperationFrontdt.Rows[0]["Weight"].ToString() != "")
_record.Weight = double.Parse(OperationFrontdt.Rows[0]["Weight"].ToString()).ToString();
_record.Applydiagnose = OperationFrontdt.Rows[0]["ApplyDiagnoseInfoId"].ToString();
_record.Applyoperation = OperationFrontdt.Rows[0]["ApplyOperationInfoId"].ToString();
_record.OperationPriority = OperationFrontdt.Rows[0]["OperationType"].ToString();
_record.OperationRoomId = int.Parse(OperationFrontdt.Rows[0]["OperationRoomId"].ToString().Trim());
_record.MedicalRecord = OperationFrontdt.Rows[0]["MedicalRecord"].ToString();
}
DataTable OperationDoingdt = BLL.OperationRecord.GetOperationDoingDataTableByPatientId(PatientId, RecoverId);
if (OperationDoingdt.Rows.Count > 0)
{
_record.Id = int.Parse(OperationDoingdt.Rows[0]["Id"].ToString().Trim());
_record.State = OperationDoingdt.Rows[0]["State"].ToString().Trim();
_record.Operation = OperationDoingdt.Rows[0]["OperationInfoId"].ToString().Trim();
_record.Diagnose = OperationDoingdt.Rows[0]["DiagnoseInfoId"].ToString().Trim();
_record.AnaesthesiaMethodId = OperationDoingdt.Rows[0]["AnaesthesiaMethodId"].ToString().Trim();
_record.OperationSiteId = OperationDoingdt.Rows[0]["OperationBodyPositionId"].ToString().Trim();
_record.OperationPositionId = OperationDoingdt.Rows[0]["OperationPositionId"].ToString().Trim();
_record.OperationDoctor = OperationDoingdt.Rows[0]["OperationDoctorId"].ToString().Trim();
_record.Assistant1 = OperationDoingdt.Rows[0]["AssistantId"].ToString().Trim();
_record.AnesthesiaDoctor = OperationDoingdt.Rows[0]["AnesthesiaDoctorId"].ToString().Trim();
_record.InstrumentNurse = OperationDoingdt.Rows[0]["InstrumentNurseId"].ToString().Trim();
_record.TourNurse = OperationDoingdt.Rows[0]["TourNurseId"].ToString().Trim();
_record.AnesthesiaDoctorAssistant = OperationDoingdt.Rows[0]["OrtherDoctorId"].ToString().Trim();
_record.ASALevel = OperationDoingdt.Rows[0]["ASALevel"].ToString().Trim();
_record.SpecialCase = OperationDoingdt.Rows[0]["SpecialCase"].ToString().Trim();
if (_record.SpecialCase == null || _record.SpecialCase == "") _record.SpecialCase = "无";
if (OperationDoingdt.Rows[0]["Fasting"].ToString() != "")
_record.Fasting = int.Parse(OperationDoingdt.Rows[0]["Fasting"].ToString());
_record.BloodType = OperationDoingdt.Rows[0]["BloodType"].ToString().Trim();
}
FillEventsDataAll(PatientId, RecoverId, _record);
FillDrugDataAll(PatientId, RecoverId, _record);
DrawOutFluid(PatientId, RecoverId, _record);
GetAnaseDataQualityRecord(_record);
_record.opeRecordInfo = BOperationRecordInfo.SelectSingle("OperationRecordId=" + _record.Id, null);
if (_record.opeRecordInfo == null) _record.opeRecordInfo = new OperationRecordInfo();
_record.FactBloodGasAnalysisList = BFactBloodGasAnalysis.Select("OperationRecordId=" + _record.Id, null);
foreach (var item in _record.FactBloodGasAnalysisList)
{
item.FactBloodGasAnalysisDataList = BFactBloodGasAnalysisData.Select("RecordId=" + item.Id, null);
}
return _record;
}
public static void FillDrugDataAll(int PatientId, int TypeId, OperationRecord _record)
{
//药品
_record.FactDrugList.Clear();
DataTable DrugAllData = new DAL.FillAnasRecordBillDataDB().FillDrugData(PatientId, TypeId);
for (int i = 0; i < DrugAllData.Rows.Count; i++)
{
FactDrug FactDrug = new FactDrug();
FactDrug.Id = int.Parse(DrugAllData.Rows[i]["Id"].ToString()); ;
FactDrug.DrugTypeId = TypeId;
FactDrug.PatientId = PatientId;
FactDrug.ParentId = int.Parse(DrugAllData.Rows[i]["ParentId"].ToString()); ;
FactDrug.DrugId = int.Parse(DrugAllData.Rows[i]["DrugsId"].ToString());
FactDrug.DrugName = DrugAllData.Rows[i]["DrugName"].ToString();
FactDrug.DrugBeginTime = DateTime.Parse(DateTime.Parse(DrugAllData.Rows[i]["DrugBeginTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"));
FactDrug.DrugEndTime = DateTime.Parse(DateTime.Parse(DrugAllData.Rows[i]["DrugEndTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"));
if (DrugAllData.Rows[i]["Dosage"].ToString() != "") FactDrug.Dosage = decimal.Parse(DrugAllData.Rows[i]["Dosage"].ToString());
FactDrug.DosageUnit = DrugAllData.Rows[i]["DosageUnit"].ToString();
FactDrug.DrugChannel = DrugAllData.Rows[i]["DrugChannel"].ToString();
FactDrug.GiveDrugType = DrugAllData.Rows[i]["GiveDrugType"].ToString();
FactDrug.Remark = DrugAllData.Rows[i]["Remark"].ToString();
FactDrug.DrugKind = DrugAllData.Rows[i]["DrugKind"].ToString();
FactDrug.IsContinue = int.Parse(DrugAllData.Rows[i]["IsContinue"].ToString());
if (DrugAllData.Rows[i]["Density"].ToString() != "") FactDrug.Density = decimal.Parse(DrugAllData.Rows[i]["Density"].ToString());
FactDrug.DensityUnit = DrugAllData.Rows[i]["DensityUnit"].ToString();
if (DrugAllData.Rows[i]["Velocity"].ToString() != "") FactDrug.Velocity = decimal.Parse(DrugAllData.Rows[i]["Velocity"].ToString());
FactDrug.VelocityUnit = DrugAllData.Rows[i]["VelocityUnit"].ToString();
FactDrug.BloodType = DrugAllData.Rows[i]["BloodType"].ToString();
FactDrug.OperatorNo = DrugAllData.Rows[i]["OperatorNo"].ToString();
FactDrug.OperatorName = DrugAllData.Rows[i]["OperatorName"].ToString();
FactDrug.OperateDate = DateTime.Parse(DrugAllData.Rows[i]["OperateDate"].ToString());
_record.FactDrugList.Add(FactDrug);
}
}
public static void FillEventsDataAll(int PatientId, int TypeId, OperationRecord _record)
{
//事件
_record.FactEventsList.Clear();
DataTable dt = BFactEvents.GetDataTable(PatientId, TypeId);
for (int i = 0; i < dt.Rows.Count; i++)
{
FactEvents FactEventsObj = new FactEvents();
FactEventsObj.Id = int.Parse(dt.Rows[i]["Id"].ToString());
if (dt.Rows[i]["Remark"].ToString() == "")
{
FactEventsObj.EventName = dt.Rows[i]["EventName"].ToString();
}
else
{
FactEventsObj.EventName = dt.Rows[i]["EventName"].ToString() + " " + dt.Rows[i]["Remark"].ToString();
}
FactEventsObj.EventBeginTime = DateTime.Parse(DateTime.Parse(dt.Rows[i]["EventBeginTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"));
FactEventsObj.EventEndTime = DateTime.Parse(DateTime.Parse(dt.Rows[i]["EventEndTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"));
FactEventsObj.OperatorNo = dt.Rows[i]["OperatorNo"].ToString();
FactEventsObj.OperatorName = dt.Rows[i]["OperatorName"].ToString();
FactEventsObj.OperateDate = DateTime.Parse(dt.Rows[i]["OperateDate"].ToString());
_record.FactEventsList.Add(FactEventsObj);
if (FactEventsObj.EventName == "手术开始")
{
_record.OperationBeginTime = FactEventsObj.EventBeginTime;
}
if (FactEventsObj.EventName == "手术结束")
{
_record.OperationEndTime = FactEventsObj.EventBeginTime;
}
if (FactEventsObj.EventName == "麻醉开始")
{
_record.AnesthesiaBeginTime = FactEventsObj.EventBeginTime;
}
if (FactEventsObj.EventName == "麻醉完成")
{
_record.AnesthesiaEndTime = FactEventsObj.EventBeginTime;
}
if (FactEventsObj.EventName == "插管")
{
_record.InCGType = FactEventsObj.EventName;
_record.InCGTime = FactEventsObj.EventBeginTime;
}
if (FactEventsObj.EventName == "喉罩")
{
_record.InCGType = FactEventsObj.EventName;
_record.InCGTime = FactEventsObj.EventBeginTime;
}
if (FactEventsObj.EventName == "拔管")
{
_record.OutCGTime = FactEventsObj.EventBeginTime;
}
}
}
public static void DrawOutFluid(int PatientId, int TypeId, OperationRecord _record)
{
//出量
_record.FactOutputLiquidsList.Clear();
DataTable OutputLiquidsDistinct = new DAL.FillAnasRecordBillDataDB().FillOutFluid(PatientId, TypeId);
for (int i = 0; i < OutputLiquidsDistinct.Rows.Count; i++)
{
FactOutputLiquids OutputLiquidsObj = new FactOutputLiquids();
OutputLiquidsObj.OutputLiquidsTypeId = TypeId;
OutputLiquidsObj.PatientId = PatientId;
OutputLiquidsObj.Id = int.Parse(OutputLiquidsDistinct.Rows[i]["Id"].ToString());
OutputLiquidsObj.OutputLiquidsId = int.Parse(OutputLiquidsDistinct.Rows[i]["OutputLiquidsId"].ToString());
OutputLiquidsObj.OutputLiquidsName = OutputLiquidsDistinct.Rows[i]["OutputLiquidsName"].ToString();
OutputLiquidsObj.DosageUnit = OutputLiquidsDistinct.Rows[i]["DosageUnit"].ToString();
OutputLiquidsObj.BeginTime = DateTime.Parse(DateTime.Parse(OutputLiquidsDistinct.Rows[i]["BeginTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"));
OutputLiquidsObj.EndTime = DateTime.Parse(DateTime.Parse(OutputLiquidsDistinct.Rows[i]["EndTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"));
OutputLiquidsObj.Dosage = decimal.Parse(OutputLiquidsDistinct.Rows[i]["Dosage"].ToString());
OutputLiquidsObj.DosageUnit = OutputLiquidsDistinct.Rows[i]["DosageUnit"].ToString();
OutputLiquidsObj.Remark = OutputLiquidsDistinct.Rows[i]["Remark"].ToString();
_record.FactOutputLiquidsList.Add(OutputLiquidsObj);
}
}
public static void GetAnaseDataQualityRecord(OperationRecord _record)
{
//出量
_record.AnaseDataQualityRecordList.Clear();
_record.AnaseDataQualityRecordList = BAnaseDataQualityRecord.Select("OperationRecordId=" + _record.Id, null);
}
/// <summary>
/// 判断添加的事件 是否正确
/// </summary>
/// <param name="OpeState">true :术中 false恢复</param>
/// <param name="_record">手术对象</param>
/// <param name="EventName">事件名称</param>
/// <param name="curTimeTemp">事件时间</param>
/// <param name="messing">返回提示消息</param>
/// <returns></returns>
public static bool IfTimeisTrue(bool OpeState, OperationRecord _record, string EventName, DateTime curTimeTemp, ref string messing)
{
//if (curTimeTemp > PublicMethod.ServerTime())
//{
// messing = EventName + "时间不可以大于当前时间 ";
// return false;
//}
TimeSpan ifinroom = curTimeTemp - _record.InRoomTime.Value;
if (EventName != "入室" && _record.InRoomTime == null)
{
messing = "请填写入室时间 ";
return false;
}
else if (EventName != "入室" && (ifinroom.TotalHours > 48 || ifinroom.TotalDays < -48))
{
messing = EventName + "时间不能大于入室时间48小时 ";
return false;
}
else if (EventName != "入室" && EventName != "麻醉开始" && _record.InRoomTime > curTimeTemp)// && OpeState == true
{
//TimeSpan tsp = DateTime.Now - _record.InRoomTime.Value;
//if (tsp.TotalHours > 12 || tsp.TotalDays > 1)
// messing = "";// "请在“事件记录”添加" + EventName + "时间!";
//else
messing = EventName + "时间不能小于入室时间(" + _record.InRoomTime + ") ";
return false;
}
if (_record.OutRoomTime != null && EventName != "出室" && EventName != "麻醉结束" && _record.OutRoomTime < curTimeTemp && OpeState == true)
{
messing = EventName + "时间不能大于出室时间(" + _record.OutRoomTime + ") ";
return false;
}
//if (EventName == "麻醉开始" && _record.OperationBeginTime != null && curTimeTemp > _record.OperationBeginTime && OpeState == true)
//{
// messing = "麻醉开始时间不能大于手术开始时间(" + _record.OperationBeginTime + ") ";
// return false;
//}
//if (EventName == "手术开始" && _record.AnesthesiaBeginTime == null && OpeState == true)
//{
// messing = "请先填写麻醉开始时间!";
// return false;
//}
//if (EventName == "手术开始" && curTimeTemp < _record.AnesthesiaBeginTime && OpeState == true)
//{
// messing = "手术开始时间必须晚于麻醉开始时间(" + _record.AnesthesiaBeginTime + ") ";
// return false;
//}
else if (EventName == "手术开始" && _record.OperationEndTime != null && curTimeTemp > _record.OperationEndTime && OpeState == true)
{
messing = "手术开始时间不能大于手术结束时间(" + _record.OperationBeginTime + ") ";
return false;
}
if (EventName == "手术结束" && _record.OperationBeginTime == null && OpeState == true)
{
messing = "请先填写手术开始时间!";
return false;
}
else if (EventName == "手术结束" && curTimeTemp < _record.OperationBeginTime && OpeState == true)
{
messing = "手术结束时间必须晚于手术开始时间(" + _record.OperationBeginTime + ") ";
return false;
}
if (EventName == "出室" && _record.OperationEndTime == null && OpeState == true)
{
messing = "请先填写手术结束时间!";
return false;
}
else if (EventName == "出室" && curTimeTemp < _record.OperationEndTime && OpeState == true)
{
messing = "出室时间必须晚于手术结束时间(" + _record.OperationEndTime + ") ";
return false;
}
return true;
}
public static DataTable getOperationRecorePhysioData(int operationId)
{
string sqlStr = "exec [dbo].[usp_GetOperationRecorePhysioData] " + operationId;
return DBHelper.GetDataTable(sqlStr);
}
}
}