protected void cmdSAVE(object sender, DirectEventArgs e) { try { string SQLT_APPOINTMENT_SEL = @" SELECT apptst_patrefid, apptst_patic, apptst_daytyp FROM appointment_setup WHERE apptst_flr='{0}' AND apptst_sec='{1}' AND apptst_bed='{2}' AND apptst_timetyp='{3}' and apptst_daytyp='{4}';"; string SQLT_APPOINTMENT_CHANGE_SEL = @"SELECT * FROM appointment_change WHERE ah_date='{0}' AND ah_flr='{1}' AND ah_sec='{2}' AND ah_bed='{3}' AND ah_timetyp='{4}';"; string SQLT_APPOINTMENT_CHANGE_UPDATE = @"UPDATE appointment_change SET ah_patic = '{0}' WHERE ah_date='{1}' AND ah_flr='{2}' AND ah_sec='{3}' AND ah_bed='{4}' AND ah_timetyp='{5}';"; string SQLT_APPOINTMENT_CHANGE_INSERT = @"INSERT INTO appointment_change (ah_date, ah_patic, ah_flr, ah_sec, ah_bed, ah_mactyp, ah_timetyp, ah_stat, ah_dycnt) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', 'N', '{7}');"; ChangeRecords <BedWeeklySchedule> recs = new StoreDataHandler(e.ExtraParams["data"]).BatchObjectData <BedWeeklySchedule>(); foreach (BedWeeklySchedule curBed in recs.Updated) { // analysis if patient changed from Monday to Sunday int iweek = GetWeekNo() + 1; for (int i = iweek; i <= 7; i++) //大於或等於今天日期才可以換床 { BedWeeklySchedule.Patient TmpPatient = null; BedWeeklySchedule.Patient newPatient = null; switch (i) { case 1: TmpPatient = curBed.Week1; break; case 2: TmpPatient = curBed.Week2; break; case 3: TmpPatient = curBed.Week3; break; case 4: TmpPatient = curBed.Week4; break; case 5: TmpPatient = curBed.Week5; break; case 6: TmpPatient = curBed.Week6; break; case 7: TmpPatient = curBed.Week7; break; default: break; } if (TmpPatient.Name.Contains("(s)") == false) { newPatient = TmpPatient; // original patient state before saving(combine patient in appointment_setup & appointment_change // patient in appointment_setup table string oldPatientId = null; DateTime dtCurAnalysis = GetDateTimeFromDayType(i); string sql = string.Format(SQLT_APPOINTMENT_SEL, curBed.Floor, curBed.Area, curBed.BedNo, curBed.TimeType, i.ToString() ); DataTable dtAppointSetup = db.Query(sql); // patient in appointment_change table string dateStringChange = GetDateTimeFromDayType(i).ToString("yyyy-MM-dd"); string sqlChange = string.Format(SQLT_APPOINTMENT_CHANGE_SEL, dateStringChange, curBed.Floor, curBed.Area, curBed.BedNo, curBed.TimeType ); DataTable dtChange = db.Query(sqlChange); // get real patient state here. (the state before saving) DataRow drChg = null; if (dtChange.Rows.Count > 0) { drChg = dtChange.Rows[0]; oldPatientId = drChg["ah_patic"].ToString(); } else { if (dtAppointSetup.Rows.Count > 0) { oldPatientId = dtAppointSetup.Rows[0]["apptst_patic"].ToString(); } else { oldPatientId = ""; // no patient } } // patient changed if (newPatient.Id != oldPatientId) { // we already have record in the appointment change table if (drChg != null) { string sqlUpdate = string.Format(SQLT_APPOINTMENT_CHANGE_UPDATE, newPatient.Id, dateStringChange, curBed.Floor, curBed.Area, curBed.BedNo, curBed.TimeType); db.Excute(sqlUpdate); } else { // not exist in appoint_change table, insert it string sqlInsert = string.Format(SQLT_APPOINTMENT_CHANGE_INSERT, dateStringChange, newPatient.Id, curBed.Floor, curBed.Area, curBed.BedNo, curBed.MachineType, curBed.TimeType, i.ToString()); db.Excute(sqlInsert); } } } } } Load_Appointment(); } catch (Exception ex) { Common._ErrorMsgShow(ex.Message.ToString()); } }
protected void Load_Appointment() { var datasource = new List <BedWeeklySchedule>(); string floor, timetype, area, bedno, mac_typ, machine, kind; floor = Common.GetComboBoxValue(cboFLOOR); if (floor == "") { floor = sFLOOR.Text; } area = Common.GetComboBoxValue(cboArea); if (area == "") { area = sAREA.Text; } timetype = Common.GetComboBoxValue(cboTIME); if (timetype == "") { timetype = sTIME.Text; } else { sTIME.Text = timetype; } string sql = "SELECT a.mac_flr, a.mac_sec, a.mac_bedno, a.mac_typ, a.mac_kind, b.genst_desc AS machine FROM mac_setup a "; sql += "LEFT JOIN general_setup b ON b.genst_code=a.mac_brand "; sql += "WHERE a.mac_status='Y' AND mac_flr='" + floor + "' AND b.genst_ctg='macbrd' "; if (area != "全区") { sql += "AND a.mac_sec='" + area + "' "; } sql += "ORDER BY a.mac_sec, a.mac_bedno"; DataTable dt1 = db.Query(sql); if (dt1.Rows.Count > 0) { foreach (DataRow dr1 in dt1.Rows) { area = dr1["mac_sec"].ToString(); bedno = dr1["mac_bedno"].ToString(); mac_typ = dr1["mac_typ"].ToString(); machine = dr1["machine"].ToString(); kind = dr1["mac_kind"].ToString(); sql = "SELECT a.apptst_patic, a.apptst_daytyp, b.pif_name FROM appointment_setup a "; sql += "LEFT JOIN pat_info b ON b.pif_ic=a.apptst_patic "; sql += "WHERE a.apptst_flr='" + floor + "' AND a.apptst_sec='" + area + "' AND a.apptst_bed='" + bedno + "' AND a.apptst_timetyp='" + timetype + "' "; sql += "ORDER BY a.apptst_daytyp"; DataTable dt2 = db.Query(sql); BedWeeklySchedule.Patient[] patname = new BedWeeklySchedule.Patient[7]; int i = 0; for (i = 0; i < 7; i++) { patname[i] = new BedWeeklySchedule.Patient { Id = "", Name = "", IsChanged = false }; } foreach (DataRow dr2 in dt2.Rows) { i = int.Parse(dr2["apptst_daytyp"].ToString()) - 1; string patic = dr2["apptst_patic"].ToString(); string pif_name = dr2["pif_name"].ToString(); if (dr2["apptst_daytyp"].ToString() == sWEEK.Text) { string sSQL = "SELECT pv_ic FROM pat_visit WHERE pv_ic='" + patic + "' AND pv_datevisit='" + toDay + "'"; DataTable sdt = db.Query(sSQL); if (sdt.Rows.Count > 0) { pif_name += "ST"; } } patname[i] = new BedWeeklySchedule.Patient { Id = patic, Name = pif_name }; } #region 增加臨時預約病患 //int j = GetWeekNo(); DateTime thisDay; for (i = 0; i < 7; i++) { int iweek = Convert.ToInt16(DateTime.Now.DayOfWeek); if (iweek == 0) { iweek = 7; } thisDay = DateTime.Now.AddDays(Convert.ToDouble(1 - iweek) + i); sql = "SELECT a.*, b.pif_name FROM appointment_change a "; sql += "LEFT JOIN pat_info b ON a.ah_patic=b.pif_ic "; sql += "WHERE a.ah_date='" + thisDay.ToString("yyyy-MM-dd") + "' AND a.ah_flr='" + floor + "' AND a.ah_sec='" + area + "' AND a.ah_bed='" + bedno + "' AND a.ah_timetyp='" + timetype + "' "; DataTable dt0 = db.Query(sql); if (dt0.Rows.Count > 0) { string patId = dt0.Rows[0]["ah_patic"] == null ? "" : dt0.Rows[0]["ah_patic"].ToString(); if (patId != "") { //dt2前面宣告使用過: 檢查沒有排入預設排班者,就是臨時排班病人 dt2 = db.Query("SELECT apptst_bed FROM appointment_setup WHERE apptst_patic='" + patId + "'"); string patName = dt0.Rows[0]["pif_name"].ToString(); if (dt0.Rows[0]["ah_dycnt"].ToString() == sWEEK.Text) { string sSQL = "SELECT pv_ic FROM pat_visit WHERE pv_ic='" + dt0.Rows[0]["ah_patic"].ToString() + "' AND pv_datevisit='" + toDay + "'"; DataTable sdt = db.Query(sSQL); if (sdt.Rows.Count > 0) { patName += "ST"; } } if (dt2.Rows.Count == 0) { patName += "(临)"; } patname[i] = new BedWeeklySchedule.Patient { Id = patId, Name = patName, IsChanged = true }; } else { patname[i] = new BedWeeklySchedule.Patient { Id = "", Name = "", IsChanged = true }; } } } #endregion datasource.Add(new BedWeeklySchedule(floor, area, bedno, mac_typ, patname[0], patname[1], patname[2], patname[3], patname[4], patname[5], patname[6], machine, timetype, kind)); } Store store = GridPanel1.GetStore(); store.DataSource = datasource; store.DataBind(); } }