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 ReferralInfo = new EntityCollection(); 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(); 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(); 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(); } } }