Ejemplo n.º 1
0
        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());
            }
        }
Ejemplo n.º 2
0
        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();
            }
        }