private void OnSaveInfo() { try { MethodInvoker method = delegate { _toaThuoc.MaToaThuoc = txtMaToaThuoc.Text; _toaThuoc.NgayKeToa = DateTime.Now; _toaThuoc.NgayKham = dtpkNgayKham.Value; if (chkNgayTaiKham.Checked) { _toaThuoc.NgayTaiKham = dtpkNgayTaiKham.Value; } else { _toaThuoc.NgayTaiKham = null; } _toaThuoc.BacSiKeToa = Guid.Parse(cboBacSi.SelectedValue.ToString()); _toaThuoc.BenhNhan = Guid.Parse(txtTenBenhNhan.Tag.ToString()); _toaThuoc.ChanDoan = txtChanDoan.Text; _toaThuoc.Note = txtGhiChu.Text; _toaThuoc.Status = (byte)Status.Actived; _toaThuoc.Loai = raToaChung.Checked ? (byte)LoaiToaThuoc.Chung : (byte)LoaiToaThuoc.SanKhoa; if (_isNew) { _toaThuoc.CreatedDate = DateTime.Now; _toaThuoc.CreatedBy = Guid.Parse(Global.UserGUID); } else { _toaThuoc.UpdatedDate = DateTime.Now; _toaThuoc.UpdatedBy = Guid.Parse(Global.UserGUID); } DataTable dt = dgChiTiet.DataSource as DataTable; List <ChiTietToaThuoc> addedList = new List <ChiTietToaThuoc>(); foreach (DataRow row in dt.Rows) { ChiTietToaThuoc cttt = new ChiTietToaThuoc(); if (row["ChiTietToaThuocGUID"] != null && row["ChiTietToaThuocGUID"] != DBNull.Value) { cttt.ChiTietToaThuocGUID = Guid.Parse(row["ChiTietToaThuocGUID"].ToString()); cttt.UpdatedDate = DateTime.Now; cttt.UpdatedBy = Guid.Parse(Global.UserGUID); } else { cttt.CreatedDate = DateTime.Now; cttt.CreatedBy = Guid.Parse(Global.UserGUID); } if (row["ThuocGUID"] != null && row["ThuocGUID"] != DBNull.Value) { cttt.ThuocGUID = Guid.Parse(row["ThuocGUID"].ToString()); } else { cttt.TenThuocNgoai = row["TenThuoc"].ToString(); } cttt.SoLuong = Convert.ToInt32(row["SoLuong"]); cttt.LieuDung = row["LieuDung"].ToString(); cttt.Note = row["Note"].ToString(); cttt.Sang = Convert.ToBoolean(row["Sang"]); cttt.SangNote = row["SangNote"].ToString(); cttt.Trua = Convert.ToBoolean(row["Trua"]); cttt.TruaNote = row["TruaNote"].ToString(); cttt.Chieu = Convert.ToBoolean(row["Chieu"]); cttt.ChieuNote = row["ChieuNote"].ToString(); cttt.Toi = Convert.ToBoolean(row["Toi"]); cttt.ToiNote = row["ToiNote"].ToString(); cttt.TruocAn = Convert.ToBoolean(row["TruocAn"]); cttt.TruocAnNote = row["TruocAnNote"].ToString(); cttt.SauAn = Convert.ToBoolean(row["SauAn"]); cttt.SauAnNote = row["SauAnNote"].ToString(); cttt.Khac_TruocSauAn = Convert.ToBoolean(row["Khac_TruocSauAn"]); cttt.Khac_TruocSauAnNote = row["Khac_TruocSauAnNote"].ToString(); cttt.Uong = Convert.ToBoolean(row["Uong"]); cttt.UongNote = row["UongNote"].ToString(); cttt.Boi = Convert.ToBoolean(row["Boi"]); cttt.BoiNote = row["BoiNote"].ToString(); cttt.Dat = Convert.ToBoolean(row["Dat"]); cttt.DatNote = row["DatNote"].ToString(); cttt.Khac_CachDung = Convert.ToBoolean(row["Khac_CachDung"]); cttt.Khac_CachDungNote = row["Khac_CachDungNote"].ToString(); cttt.Status = (byte)Status.Actived; addedList.Add(cttt); } Result result = KeToaBus.InsertToaThuoc(_toaThuoc, addedList, _deletedKeys); if (!result.IsOK) { MsgBox.Show(this.Text, result.GetErrorAsString("KeToaBus.InsertToaThuoc"), IconType.Error); Utility.WriteToTraceLog(result.GetErrorAsString("KeToaBus.InsertToaThuoc")); this.DialogResult = System.Windows.Forms.DialogResult.Cancel; } }; if (InvokeRequired) { BeginInvoke(method); } else { method.Invoke(); } } catch (Exception e) { MsgBox.Show(this.Text, e.Message, IconType.Error); Utility.WriteToTraceLog(e.Message); } }
public static Result InsertToaThuoc(ToaThuoc toaThuoc, List <ChiTietToaThuoc> addedList, List <string> deletedKeys) { Result result = new Result(); MMOverride db = null; try { db = new MMOverride(); string desc = string.Empty; using (TransactionScope tnx = new TransactionScope(TransactionScopeOption.RequiresNew)) { //Insert if (toaThuoc.ToaThuocGUID == null || toaThuoc.ToaThuocGUID == Guid.Empty) { toaThuoc.ToaThuocGUID = Guid.NewGuid(); toaThuoc.IsWarning = true; db.ToaThuocs.InsertOnSubmit(toaThuoc); db.SubmitChanges(); string ngayTaiKhamStr = string.Empty; if (toaThuoc.NgayTaiKham != null && toaThuoc.NgayTaiKham.HasValue) { ngayTaiKhamStr = toaThuoc.NgayTaiKham.Value.ToString("dd/MM/yyyy HH:mm:ss"); } desc += string.Format("- Toa thuốc: GUID: '{0}', Mã toa thuốc: '{1}', Ngày khám: '{2}', Ngày tái khám: '{3}', Bác sĩ kê toa: '{4}', Bệnh nhân: '{5}', Chẩn đoán: '{6}', Lời dặn: '{7}'\n", toaThuoc.ToaThuocGUID.ToString(), toaThuoc.MaToaThuoc, toaThuoc.NgayKham.Value.ToString("dd/MM/yyyy HH:mm:ss"), ngayTaiKhamStr, toaThuoc.DocStaff.Contact.FullName, toaThuoc.Patient.Contact.FullName, toaThuoc.ChanDoan, toaThuoc.Note); if (addedList != null && addedList.Count > 0) { desc += "- Chi tiết toa thuốc được thêm:\n"; //Chi tiet toa thuoc foreach (ChiTietToaThuoc cttt in addedList) { cttt.ChiTietToaThuocGUID = Guid.NewGuid(); cttt.ToaThuocGUID = toaThuoc.ToaThuocGUID; db.ChiTietToaThuocs.InsertOnSubmit(cttt); db.SubmitChanges(); string tenThuoc = string.Empty; if (cttt.Thuoc != null) { tenThuoc = cttt.Thuoc.TenThuoc; } else { tenThuoc = cttt.TenThuocNgoai; } desc += string.Format(" + GUID: '{0}', Thuốc: '{1}', Số lượng: '{2}'\n", cttt.ChiTietToaThuocGUID.ToString(), tenThuoc, cttt.SoLuong); } } //Tracking desc = desc.Substring(0, desc.Length - 1); Tracking tk = new Tracking(); tk.TrackingGUID = Guid.NewGuid(); tk.TrackingDate = DateTime.Now; tk.DocStaffGUID = Guid.Parse(Global.UserGUID); tk.ActionType = (byte)ActionType.Add; tk.Action = "Thêm thông tin toa thuốc"; tk.Description = desc; tk.TrackingType = (byte)TrackingType.None; tk.ComputerName = Utility.GetDNSHostName(); db.Trackings.InsertOnSubmit(tk); db.SubmitChanges(); } else //Update { ToaThuoc tt = db.ToaThuocs.SingleOrDefault <ToaThuoc>(o => o.ToaThuocGUID.ToString() == toaThuoc.ToaThuocGUID.ToString()); if (tt != null) { tt.MaToaThuoc = toaThuoc.MaToaThuoc; tt.NgayKeToa = toaThuoc.NgayKeToa; tt.NgayKham = toaThuoc.NgayKham; tt.NgayTaiKham = toaThuoc.NgayTaiKham; tt.BacSiKeToa = toaThuoc.BacSiKeToa; tt.BenhNhan = toaThuoc.BenhNhan; tt.ChanDoan = toaThuoc.ChanDoan; tt.Note = toaThuoc.Note; tt.Loai = toaThuoc.Loai; tt.CreatedDate = toaThuoc.CreatedDate; tt.CreatedBy = toaThuoc.CreatedBy; tt.UpdatedDate = toaThuoc.UpdatedDate; tt.UpdatedBy = toaThuoc.UpdatedBy; tt.DeletedDate = toaThuoc.DeletedDate; tt.DeletedBy = toaThuoc.DeletedBy; tt.Status = toaThuoc.Status; db.SubmitChanges(); string ngayTaiKhamStr = string.Empty; if (tt.NgayTaiKham != null && tt.NgayTaiKham.HasValue) { ngayTaiKhamStr = tt.NgayTaiKham.Value.ToString("dd/MM/yyyy HH:mm:ss"); } desc += string.Format("- Toa thuốc: GUID: '{0}', Mã toa thuốc: '{1}', Ngày khám: '{2}', Ngày tái khám: '{3}', Bác sĩ kê toa: '{4}', Bệnh nhân: '{5}', Chẩn đoán: '{6}', Lời dặn: '{7}'\n", tt.ToaThuocGUID.ToString(), tt.MaToaThuoc, tt.NgayKham.Value.ToString("dd/MM/yyyy HH:mm:ss"), ngayTaiKhamStr, tt.DocStaff.Contact.FullName, tt.Patient.Contact.FullName, tt.ChanDoan, toaThuoc.Note); //Delete chi tiet toa thuoc if (deletedKeys != null && deletedKeys.Count > 0) { desc += "- Chi tiết toa thuốc được xóa:\n"; foreach (string key in deletedKeys) { ChiTietToaThuoc cttt = db.ChiTietToaThuocs.SingleOrDefault <ChiTietToaThuoc>(c => c.ChiTietToaThuocGUID.ToString() == key); if (cttt != null) { cttt.DeletedDate = DateTime.Now; cttt.DeletedBy = Guid.Parse(Global.UserGUID); cttt.Status = (byte)Status.Deactived; string tenThuoc = string.Empty; if (cttt.Thuoc != null) { tenThuoc = cttt.Thuoc.TenThuoc; } else { tenThuoc = cttt.TenThuocNgoai; } desc += string.Format(" + GUID: '{0}', Thuốc: '{1}', Số lượng: '{2}'\n", cttt.ChiTietToaThuocGUID.ToString(), tenThuoc, cttt.SoLuong); } } db.SubmitChanges(); } //Add chi tiet toa thuoc if (addedList != null && addedList.Count > 0) { desc += "- Chi tiết toa thuốc được thêm:\n"; foreach (ChiTietToaThuoc cttt in addedList) { cttt.ToaThuocGUID = tt.ToaThuocGUID; if (cttt.ChiTietToaThuocGUID == Guid.Empty) { cttt.ChiTietToaThuocGUID = Guid.NewGuid(); db.ChiTietToaThuocs.InsertOnSubmit(cttt); db.SubmitChanges(); string tenThuoc = string.Empty; if (cttt.Thuoc != null) { tenThuoc = cttt.Thuoc.TenThuoc; } else { tenThuoc = cttt.TenThuocNgoai; } desc += string.Format(" + GUID: '{0}', Thuốc: '{1}', Số lượng: '{2}'\n", cttt.ChiTietToaThuocGUID.ToString(), tenThuoc, cttt.SoLuong); } else { ChiTietToaThuoc chiTietToaThuoc = db.ChiTietToaThuocs.SingleOrDefault <ChiTietToaThuoc>(c => c.ChiTietToaThuocGUID == cttt.ChiTietToaThuocGUID); if (chiTietToaThuoc != null) { chiTietToaThuoc.ThuocGUID = cttt.ThuocGUID; chiTietToaThuoc.TenThuocNgoai = cttt.TenThuocNgoai; chiTietToaThuoc.SoLuong = cttt.SoLuong; chiTietToaThuoc.LieuDung = cttt.LieuDung; chiTietToaThuoc.Note = cttt.Note; chiTietToaThuoc.Sang = cttt.Sang; chiTietToaThuoc.Trua = cttt.Trua; chiTietToaThuoc.Chieu = cttt.Chieu; chiTietToaThuoc.Toi = cttt.Toi; chiTietToaThuoc.TruocAn = cttt.TruocAn; chiTietToaThuoc.SauAn = cttt.SauAn; chiTietToaThuoc.Khac_TruocSauAn = cttt.Khac_TruocSauAn; chiTietToaThuoc.Uong = cttt.Uong; chiTietToaThuoc.Boi = cttt.Boi; chiTietToaThuoc.Dat = cttt.Dat; chiTietToaThuoc.Khac_CachDung = cttt.Khac_CachDung; chiTietToaThuoc.SangNote = cttt.SangNote; chiTietToaThuoc.TruaNote = cttt.TruaNote; chiTietToaThuoc.ChieuNote = cttt.ChieuNote; chiTietToaThuoc.ToiNote = cttt.ToiNote; chiTietToaThuoc.TruocAnNote = cttt.TruocAnNote; chiTietToaThuoc.SauAnNote = cttt.SauAnNote; chiTietToaThuoc.Khac_TruocSauAnNote = cttt.Khac_TruocSauAnNote; chiTietToaThuoc.UongNote = cttt.UongNote; chiTietToaThuoc.BoiNote = cttt.BoiNote; chiTietToaThuoc.DatNote = cttt.DatNote; chiTietToaThuoc.Khac_CachDungNote = cttt.Khac_CachDungNote; chiTietToaThuoc.Status = (byte)Status.Actived; chiTietToaThuoc.UpdatedDate = cttt.UpdatedDate; chiTietToaThuoc.UpdatedBy = cttt.UpdatedBy; db.SubmitChanges(); string tenThuoc = string.Empty; if (cttt.Thuoc != null) { tenThuoc = cttt.Thuoc.TenThuoc; } else { tenThuoc = cttt.TenThuocNgoai; } desc += string.Format(" + GUID: '{0}', Thuốc: '{1}', Số lượng: '{2}'\n", chiTietToaThuoc.ChiTietToaThuocGUID.ToString(), tenThuoc, chiTietToaThuoc.SoLuong); } } } } //Tracking desc = desc.Substring(0, desc.Length - 1); Tracking tk = new Tracking(); tk.TrackingGUID = Guid.NewGuid(); tk.TrackingDate = DateTime.Now; tk.DocStaffGUID = Guid.Parse(Global.UserGUID); tk.ActionType = (byte)ActionType.Edit; tk.Action = "Sửa thông tin toa thuốc"; tk.Description = desc; tk.TrackingType = (byte)TrackingType.None; tk.ComputerName = Utility.GetDNSHostName(); db.Trackings.InsertOnSubmit(tk); db.SubmitChanges(); } } tnx.Complete(); } } catch (System.Data.SqlClient.SqlException se) { result.Error.Code = (se.Message.IndexOf("Timeout expired") >= 0) ? ErrorCode.SQL_QUERY_TIMEOUT : ErrorCode.INVALID_SQL_STATEMENT; result.Error.Description = se.ToString(); } catch (Exception e) { result.Error.Code = ErrorCode.UNKNOWN_ERROR; result.Error.Description = e.ToString(); } finally { if (db != null) { db.Dispose(); db = null; } } return(result); }