Files
csharpcode/patientman/PatientMan/Forms/frmReferral.cs
2025-08-02 05:20:17 +07:00

240 lines
8.4 KiB
C#

using System;
using System.Collections.Generic;
using Datalib.EntityClasses;
using Datalib.HelperClasses;
using Datalib.Linq;
using System.Linq;
using System.Windows.Forms;
using System.IO;
namespace PatientMan.Forms
{
public partial class frmReferral : PatientMan.BasicForms.frmCommon
{
public EntityCollection<TblReferralsToEntity> ReferralInfo = new EntityCollection<TblReferralsToEntity>();
public frmReferral()
{
InitializeComponent();
}
private void frmReferral_Load(object sender, EventArgs e)
{
LinqMetaData MetaData = new LinqMetaData();
MetaData.AdapterToUse= adapter;
var pro = (from q in MetaData.TblProvince select q).ToList();
var Agency = (from q in MetaData.TblAgency select new {q.AgencyTypeId, AgencyTypeName=SettingInfo.Language==0?q.VAgencyTypeName:q.EAgencyTypeName}).ToList();
var Patients = (from q in MetaData.TblPatient select new { q.PatientId, PatientName = strUtil.Decrypt(q.PatientName) }).ToList();
_province.DataSource = pro;
_AgencyType.DataSource = Agency;
_Patients.DataSource = Patients;
LoadData();
}
public override void LoadData()
{
adapter.FetchEntityCollection(ReferralInfo, null);
usrReferralInfo.ReferralInfos = null;
grdReferralInfo.DataSource = null;
usrReferralInfo.ReferralInfos = ReferralInfo;
grdReferralInfo.DataSource = ReferralInfo;
usrReferralInfo.BindingData();
usrReferralInfo.LoadLibrary();
}
private void gridView_DoubleClick(object sender, EventArgs e)
{
if (ReferralInfo.Count == 0)
{
return;
}
var PatientId = ReferralInfo[BindingContext[ReferralInfo].Position].PatientId;
var frm = new frmPatientInfo();
frm.PatientsCollection = new EntityCollection<TblPatientEntity>();
var PatientInfo = new TblPatientEntity(PatientId);
adapter.FetchEntity(PatientInfo);
frm.PatientsCollection.Add(PatientInfo);
frm.PatientInfo = PatientInfo;
frm.LoadData();
frm.gotoReferral();
frm.ShowDialog();
}
private void Print_Click(object sender, EventArgs e)
{
grdReferralInfo.ShowPrintPreview();
}
private void barPrint_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
grdReferralInfo.ShowPrintPreview();
}
private void barButtonView_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (ReferralInfo.Count == 0)
{
return;
}
var PatientId = ReferralInfo[BindingContext[ReferralInfo].Position].PatientId;
var frm = new frmPatientInfo();
frm.PatientsCollection = new EntityCollection<TblPatientEntity>();
var PatientInfo = new TblPatientEntity(PatientId);
adapter.FetchEntity(PatientInfo);
frm.PatientsCollection.Add(PatientInfo);
frm.PatientInfo = PatientInfo;
frm.LoadData();
frm.gotoReferral();
frm.ShowDialog();
}
private void barCorrect_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.progressPanel.Visible = true;
MoveToEnd();
this.progressPanel.Visible = false;
}
private void MoveToEnd()
{
ResetEndTreatment();
foreach (TblReferralsToEntity referral in ReferralInfo)
{
string TypeId = referral.TypeId;
TypeId = TypeId.Trim();
switch (TypeId)
{
case "09":
EndExam(referral.PatientId, referral.EndDate.Value, TypeId);
EndTreatment(referral.PatientId, referral.EndDate.Value, TypeId);
break;
case "10":
EndExam(referral.PatientId, referral.EndDate.Value, TypeId);
EndTreatment(referral.PatientId, referral.EndDate.Value, TypeId);
break;
case "11":
EndExam(referral.PatientId, referral.EndDate.Value, TypeId);
EndTreatment(referral.PatientId, referral.EndDate.Value, TypeId);
FillDeathDate(referral.PatientId, referral.EndDate.Value);
break;
}
}
}
private void EndExam(string PatientId, DateTime EndDate, string TypeId)
{
LinqMetaData meta = new LinqMetaData(adapter);
TblExaminationInfoEntity Exam= new TblExaminationInfoEntity();
try
{
Exam = meta.TblExaminationInfo.Where(q => q.PatientId == PatientId).Where(q => q.ExamDate <= EndDate).OrderByDescending(q => q.ExamDate).First();
Exam.EndExamDate = EndDate;
Exam.ReasonEnd = TypeId;
adapter.SaveEntity(Exam, true);
}
catch (Exception err)
{
LogInfo log = new LogInfo();
log.RecordID = err.Message + " Examination " + PatientId + " " + TypeId;
WriteLog(log);
}
}
private void EndTreatment(string PatientId, DateTime EndDate, string TypeId)
{
LinqMetaData meta = new LinqMetaData(adapter);
try
{
TblTreatmentInfoEntity Treatment = meta.TblTreatmentInfo.Where(q => q.PatientId == PatientId && q.TreatmentId =="01").Where(q => q.TreatmentSdate <= EndDate).OrderByDescending(q => q.TreatmentSdate).First();
Treatment.TreatmentEdate = EndDate;
Treatment.ReasonId = TypeId;
adapter.SaveEntity(Treatment, true);
}
catch (Exception err)
{
LogInfo log = new LogInfo();
log.RecordID = "Treatment " + PatientId + " " + TypeId;
WriteLog(log);
}
}
private void FillDeathDate(string PatientId, DateTime EndDate)
{
TblPatientEntity Patient = new TblPatientEntity(PatientId);
adapter.FetchEntity(Patient, null, null);
Patient.DeathDate = EndDate;
adapter.SaveEntity(Patient, true);
}
private void ResetEndTreatment()
{
LinqMetaData meta = new LinqMetaData(adapter);
var TreatmentInfos = meta.TblTreatmentInfo;
var Exams = meta.TblExaminationInfo;
foreach(TblExaminationInfoEntity Exam in Exams)
{
if (Exam.EndExamDate != null && (Exam.ReasonEnd == "09" || Exam.ReasonEnd == "10" || Exam.ReasonEnd == "11"))
{
Exam.ReasonEnd = null;
Exam.ReTreatment = 0;
Exam.EndExamDate = null;
adapter.SaveEntity(Exam);
}
}
foreach (TblTreatmentInfoEntity Treat in TreatmentInfos)
{
if (Treat.TreatmentEdate != null && (Treat.ReasonId == "09" || Treat.ReasonId == "10" || Treat.ReasonId == "11"))
{
Treat.ReasonId = null;
Treat.TreatmentEdate = null;
adapter.SaveEntity(Treat);
}
}
}
public override void WriteLog(LogInfo log)
{
string path = Application.StartupPath;
string logs = log.RecordID;
DateTime CurrDate = DateTime.Today;
string filename = path + @"/Logs/EndTreatment" + CurrDate.ToString("MM-yyyy") + ".txt";
using (StreamWriter w = File.AppendText(filename))
{
w.WriteLine(logs);
w.Close();
}
}
private void findDup_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
frmDuplicates frm = new frmDuplicates();
frm.callFrm = this;
frm.LoadData();
frm.ShowDialog();
}
}
}