Exemplo n.º 1
0
        /// <summary>
        /// 设置时间提示信息
        /// </summary>
        /// <param name="currentEmrModel"></param>
        /// <param name="firstEmrModel"></param>
        private void ComputeDateTime(EmrModel currentEmrModel, EmrModel firstEmrModel, List <EmrModel> modelList)
        {
            try
            {
                if (null != currentEmrModel && null != firstEmrModel)
                {
                    if (currentEmrModel.FirstDailyEmrModel)
                    {///修改的病历是首程
                        m_MinDateTime             = DS_BaseService.GetInHostTime((int)m_App.CurrentPatientInfo.NoOfFirstPage);
                        this.labelControlTip.Text = "病程时间应大于入院时间 " + m_MinDateTime.ToString("yyyy-MM-dd HH:mm:ss");

                        EmrModel firstModel = modelList.Where(p => !p.FirstDailyEmrModel).OrderByDescending(q => q.DisplayTime).FirstOrDefault();
                        if (null != firstModel)
                        {
                            m_MaxDateTime              = firstModel.DisplayTime;
                            this.labelControlTip.Text += ",小于下一个病历时间 " + firstModel.DisplayTime.ToString("yyyy-MM-dd HH:mm:ss") + "。";
                        }
                    }
                    else
                    {///修改的病历不是首程
                        m_MinDateTime             = firstEmrModel.DisplayTime;
                        this.labelControlTip.Text = "病程时间应大于首次病程时间 " + m_MinDateTime.ToString("yyyy-MM-dd HH:mm:ss");
                    }
                }
                else
                {
                    m_MinDateTime             = DS_BaseService.GetInHostTime((int)m_App.CurrentPatientInfo.NoOfFirstPage);
                    this.labelControlTip.Text = "病程时间应大于入院时间 " + m_MinDateTime.ToString("yyyy-MM-dd HH:mm:ss");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 确定事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_OK_Click(object sender, EventArgs e)
        {
            try
            {
                //设置当前病人(修复m_App病人丢失问题)
                if (null == m_App || null == m_App.CurrentPatientInfo || m_App.CurrentPatientInfo.NoOfFirstPage.ToString() != m_IemInfo.IemBasicInfo.NoOfInpat)
                {
                    CurrentInpatient = DS_SqlService.GetPatientInfo(m_IemInfo.IemBasicInfo.NoOfInpat);
                }
                else
                {
                    CurrentInpatient = m_App.CurrentPatientInfo;
                }

                GetUI();
                if (null != CurrentInpatient)
                {
                    CurrentInpatient.ReInitializeAllProperties();
                }
                IemMainPageManger manger = new IemMainPageManger(m_App, CurrentInpatient);
                manger.SaveData(m_IemInfo);

                //add by cyq 2012-12-05 病案室人员编辑后状态改为已归档
                if (editFlag)
                {
                    DS_BaseService.SetRecordsRebacked(int.Parse(CurrentInpatient.NoOfFirstPage.ToString().Trim()));
                }
            }
            catch (Exception ex)
            {
                MyMessageBox.Show(1, ex);
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// 双击事件
 /// xlb 2013-01-11
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void gridViewTimeLimit_DoubleClick(object sender, EventArgs e)
 {
     try
     {
         if (gridViewTimeLimit.FocusedRowHandle < 0)
         {
             return;
         }
         if (App == null)
         {
             return;
         }
         DataRow dr = gridViewTimeLimit.GetDataRow(gridViewTimeLimit.FocusedRowHandle);
         if (dr == null)
         {
             return;
         }
         decimal patid = Convert.ToDecimal(dr["noofinpat"]);
         if (patid < 0)
         {
             return;
         }
         App.ChoosePatient(patid);
         App.LoadPlugIn("DrectSoft.Core.MainEmrPad.dll", DS_BaseService.GetUCEmrInputPath());
     }
     catch (Exception ex)
     {
         MyMessageBox.Show(1, ex);
     }
 }
Exemplo n.º 4
0
 /// <summary>
 /// 检查病人当前科室与医生科室(包含权限科室)是否一致
 /// </summary>
 /// <auth>Yanqiao.Cai</auth>
 /// <date>2013-03-01</date>
 /// <param name="noofinpat">首页序号</param>
 /// <returns></returns>
 private string CheckIfCurrentDept(int noofinpat)
 {
     try
     {
         DataTable inpDt = DS_SqlService.GetInpatientByID(noofinpat, 2);
         if (null == inpDt || inpDt.Rows.Count == 0)
         {
             return("该病人不存在,请刷新数据重试。");
         }
         string dept = null == inpDt.Rows[0]["outhosdept"] ? "" : inpDt.Rows[0]["outhosdept"].ToString().Trim();
         if (dept != DS_Common.currentUser.CurrentDeptId)
         {//该病人已转科
             if (string.IsNullOrEmpty(dept.Trim()))
             {
                 return("该病人所属科室异常,请联系管理员。");
             }
             string          deptName = DS_BaseService.GetDeptNameByID(dept);
             List <string[]> list     = DS_BaseService.GetDeptAndWardInRight(DS_Common.currentUser.Id);
             if (null != list && list.Count > 0 && list.Any(p => p[0] == dept))
             {//转科后科室在医生权限范围内
                 return("该病人已转至 " + deptName + "(" + dept + ")" + ",请切换科室。");
             }
             else
             {
                 return("该病人已转至 " + deptName + "(" + dept + ")" + ",您无权操作。");
             }
         }
         return(string.Empty);
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// 查看病历信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void barButtonItemMedicalInfo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            try
            {
                DataRow dr = gridViewList.GetDataRow(gridViewList.FocusedRowHandle);
                if (dr != null)
                {
                    string noOfFirstPage = dr["NoOfInpat"].ToString();
                    string stateID       = dr["StateID"].ToString();
                    string deptName      = dr["DeptName"].ToString();

                    if (stateID == Convert.ToString((int)ConsultStatus.WaitConsultation))
                    {
                        if (deptName != m_App.User.CurrentDeptName)
                        {
                            m_App.EmrAllowEdit = false;
                        }
                        m_App.ChoosePatient(Convert.ToDecimal(noOfFirstPage), FloderState.None.ToString());

                        m_App.LoadPlugIn("DrectSoft.Core.MainEmrPad.dll", DS_BaseService.GetUCEmrInputPath());
                        m_App.EmrAllowEdit = true;
                    }
                }
            }
            catch (Exception ex)
            {
                MyMessageBox.Show(1, ex);
            }
        }
Exemplo n.º 6
0
        private void advBandedGridView1_DoubleClick(object sender, EventArgs e)
        {
            if (advBandedGridView1.FocusedRowHandle < 0)
            {
                return;
            }
            if (App == null)
            {
                return;
            }
            DataRow dr = advBandedGridView1.GetDataRow(advBandedGridView1.FocusedRowHandle);

            if (dr == null)
            {
                return;
            }
            decimal patid = Convert.ToDecimal(dr[ConstRes.cstFieldFirstPage]);

            if (patid < 0)
            {
                return;
            }

            App.ChoosePatient(patid);
            App.LoadPlugIn("DrectSoft.Core.MainEmrPad.dll", DS_BaseService.GetUCEmrInputPath());
        }
Exemplo n.º 7
0
        private void btn_ReWrite_Click(object sender, EventArgs e)
        {
            if (gridViewHistoryInfo.FocusedRowHandle < 0)
            {
                return;
            }
            DataRow row = gridViewHistoryInfo.GetDataRow(gridViewHistoryInfo.FocusedRowHandle);

            m_App.ChoosePatient(Convert.ToDecimal(row["noofinpat"]), FloderState.NoneAudit.ToString());
            m_App.LoadPlugIn("DrectSoft.Core.MainEmrPad.dll", DS_BaseService.GetUCEmrInputPath());
        }
Exemplo n.º 8
0
 /// <summary>
 /// 重新加载整个文书录入界面
 /// </summary>
 private void RefreshEMRMainPad()
 {
     try
     {
         m_App.ChoosePatient(m_CurrentInpatient.NoOfFirstPage);
         m_App.LoadPlugIn("DrectSoft.Core.MainEmrPad.dll", DS_BaseService.GetUCEmrInputPath());
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 9
0
        private void gridHistoryInp_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            GridHitInfo hitInfo = gridViewHistoryInfo.CalcHitInfo(e.Location);

            if (hitInfo.RowHandle >= 0)
            {
                DataRowView drv = gridViewHistoryInfo.GetRow(hitInfo.RowHandle) as DataRowView;
                if (drv != null)
                {
                    m_App.ChoosePatient(Convert.ToDecimal(drv["noofinpat"]), FloderState.NoneAudit.ToString());
                    m_App.LoadPlugIn("DrectSoft.Core.MainEmrPad.dll", DS_BaseService.GetUCEmrInputPath());
                }
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// 显示病历信息方法
        /// </summary>
        private void ShowEmrMessage()
        {
            try
            {
                int[] list = dbGridView.GetSelectedRows();
                if (list.Length > 0)
                {
                    string status = dbGridView.GetRowCellValue(list[0], "STATUS").ToString();
                    //调用病历查看窗口,进行病历的查询
                    if (status.Equals("2"))
                    {
                        string noofinpat = dbGridView.GetRowCellValue(list[0], "NOOFINPAT").ToString();
                        // LoadEmrContent(noofinpat);

                        //  LoadEmrContent(noofinpat);
                        decimal syxh = decimal.Parse(noofinpat);
                        if (syxh < 0)
                        {
                            return;
                        }
                        if (syxh < 0)
                        {
                            return;
                        }

                        if (HasBaby(noofinpat))
                        {
                            ChoosePatOrBaby choosepat = new ChoosePatOrBaby(SqlUtil.App, noofinpat);
                            choosepat.StartPosition = FormStartPosition.CenterParent;
                            if (choosepat.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                            {
                                SqlUtil.App.ChoosePatient(decimal.Parse(choosepat.NOOfINPAT));
                                SqlUtil.App.LoadPlugIn("DrectSoft.Core.MainEmrPad.dll", DS_BaseService.GetUCEmrInputPath());
                            }
                        }
                        else
                        {
                            SqlUtil.App.ChoosePatient(syxh);
                            SqlUtil.App.LoadPlugIn("DrectSoft.Core.MainEmrPad.dll", DS_BaseService.GetUCEmrInputPath());
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// 双击事件
        /// edit by Yanqiao.Cai 2012-11-12
        /// 1、add try ... catch
        /// 2、双击小标题无操作
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void gridControl1_DoubleClick(object sender, EventArgs e)
        {
            try
            {
                GridHitInfo hitInfo = gridViewInpatientFail.CalcHitInfo(gridInpatientFail.PointToClient(Cursor.Position));
                if (hitInfo.RowHandle < 0)
                {
                    return;
                }
                DataRow dataRow = gridViewInpatientFail.GetDataRow(gridViewInpatientFail.FocusedRowHandle);
                if (null == dataRow)
                {
                    return;
                }
                string noofinpat = dataRow["noofinpat"].ToString();
                if (HasBaby(noofinpat))
                {
                    ChoosePatOrBaby choosepat = new ChoosePatOrBaby(_app, noofinpat);
                    choosepat.StartPosition = FormStartPosition.CenterParent;
                    if (choosepat.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        _app.ChoosePatient(decimal.Parse(choosepat.NOOfINPAT));
                        _app.LoadPlugIn("DrectSoft.Core.MainEmrPad.dll", DS_BaseService.GetUCEmrInputPath());
                    }
                }
                else
                {
                    _app.ChoosePatient(Convert.ToDecimal(noofinpat));
                    _app.LoadPlugIn("DrectSoft.Core.MainEmrPad.dll", DS_BaseService.GetUCEmrInputPath());
                }
                #region edit by cyq 2012-11-14
                //GridHitInfo hitInfo = gridViewInpatientFail.CalcHitInfo(gridInpatientFail.PointToClient(Cursor.Position));
                //if (hitInfo.RowHandle < 0)
                //{
                //    return;
                //}
                //decimal syxh = GetCurrentPat();
                //if (syxh < 0) return;

                //App.ChoosePatient(syxh);
                //App.LoadPlugIn("DrectSoft.Core.MainEmrPad.dll", DS_BaseService.GetUCEmrInputPath());
                #endregion
            }
            catch (Exception ex)
            {
                MyMessageBox.Show(1, ex);
            }
        }
Exemplo n.º 12
0
 /// <summary>
 /// 病案室人员编辑首页(未归档)
 /// <auth>Yanqiao.Cai</auth>
 /// <date>2012-12-05</date>
 /// </summary>
 /// <param name="noofinpat">首页序号</param>
 /// <return></return>
 private void InitFirstPageEditFlag(string noofinpat)
 {
     try
     {
         editFlag = DS_BaseService.CheckIfQuatityControlPerson(DS_Common.currentUser.Id);
         //如果是病案人员则继续判断是否为未归档病历
         if (editFlag)
         {
             editFlag = DS_BaseService.CheckRecordRebacked(noofinpat);
         }
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
Exemplo n.º 13
0
        private Inpatient CurrentInpatient;//add by ywk
        /// <summary>
        /// edit by xlb 2013-01-23
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_OK_Click(object sender, EventArgs e)
        {
            try
            {
                string message = "";
                bool   isSuit  = Validate(ref message);
                if (!isSuit)
                {
                    //throw new Exception(message);//在这抛异常,岂不是抛出了系统级,应抛出信息为message
                    //edit by ywk 2013年2月26日8:42:25
                    DrectSoft.Common.Ctrs.DLG.MyMessageBox.Show(message);
                    return;
                }
                //设置当前病人(修复m_App病人丢失问题)
                if (null == m_App || null == m_App.CurrentPatientInfo || m_App.CurrentPatientInfo.NoOfFirstPage.ToString() != m_IemInfo.IemBasicInfo.NoOfInpat)
                {
                    CurrentInpatient = DS_SqlService.GetPatientInfo(m_IemInfo.IemBasicInfo.NoOfInpat);
                }
                else
                {
                    CurrentInpatient = m_App.CurrentPatientInfo;
                }

                GetUI();
                //edit by 2012-12-20 张业兴 关闭弹出框只关闭提示框
                //((ShowUC)this.Parent).Close(true, m_IemInfo);
                //点击确认按钮就将数据更新到数据库
                //CurrentInpatient = m_App.CurrentPatientInfo;
                if (null != CurrentInpatient)
                {
                    CurrentInpatient.ReInitializeAllProperties();
                }
                IemMainPageManger manger = new IemMainPageManger(m_App, CurrentInpatient);
                manger.SaveData(m_IemInfo);

                //add by cyq 2012-12-05 病案室人员编辑后状态改为已归档
                if (editFlag)
                {
                    DS_BaseService.SetRecordsRebacked(int.Parse(CurrentInpatient.NoOfFirstPage.ToString().Trim()));
                }
            }
            catch (Exception ex)
            {
                DrectSoft.Common.Ctrs.DLG.MyMessageBox.Show(1, ex);
            }
        }
Exemplo n.º 14
0
        /// <summary>
        /// 病历归档事件
        /// <auth>Yanqiao.Cai</auth>
        /// <date>2011-11-05</date>
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_reback_Click(object sender, EventArgs e)
        {
            try
            {
                int fouceRowIndex = gridviewRecordNoOnFile.FocusedRowHandle;
                if (fouceRowIndex < 0)
                {
                    gridControlRecordNoOnFile.Focus();
                    SqlUtil.App.CustomMessageBox.MessageShow("请选择一条病人记录");
                    return;
                }
                DataRow foucesRow = gridviewRecordNoOnFile.GetDataRow(fouceRowIndex);
                if (null == foucesRow || null == foucesRow["NOOFINPAT"])
                {
                    return;
                }
                int noofinpat = int.Parse(foucesRow["NOOFINPAT"].ToString().Trim());

                DataTable dt = DS_SqlService.GetRecordsByNoofinpat(noofinpat);
                if (null == dt || dt.Rows.Count == 0)
                {
                    DrectSoft.Common.Ctrs.DLG.MyMessageBox.Show(foucesRow["NAME"] + " 没有病历,无法归档。");
                    return;
                }
                if (DrectSoft.Common.Ctrs.DLG.MyMessageBox.Show("您确定要归档 " + foucesRow["NAME"] + " 的病历吗?", "归档病历", DrectSoft.Common.Ctrs.DLG.MyMessageBoxButtons.YesNo) == DialogResult.No)
                {
                    return;
                }
                if (DS_BaseService.CheckRecordRebacked(noofinpat.ToString()))
                {
                    int num = DS_SqlService.SetRecordsRebacked(noofinpat.ToString());
                    if (num > 0)
                    {
                        DrectSoft.Common.Ctrs.DLG.MyMessageBox.Show("归档成功");
                        gridviewRecordNoOnFile.DeleteRow(gridviewRecordNoOnFile.FocusedRowHandle);
                        return;
                    }
                }
                DrectSoft.Common.Ctrs.DLG.MyMessageBox.Show("该病人已归档。");
            }
            catch (Exception ex)
            {
                DrectSoft.Common.Ctrs.DLG.MyMessageBox.Show(1, ex);
            }
        }
Exemplo n.º 15
0
        /// <summary>
        /// 加载文书录入页面
        /// edit by Yanqiao.Cai 2012-11-23
        /// </summary>
        /// <param name="bolMessage"></param>
        private void BrowserMedicalRecord(bool bolMessage)
        {
            try
            {
                int fouceRowIndex = gridviewRecordNoOnFile.FocusedRowHandle;
                if (fouceRowIndex < 0)
                {
                    if (bolMessage)
                    {
                        gridControlRecordNoOnFile.Focus();
                        SqlUtil.App.CustomMessageBox.MessageShow("请选择一条病人记录");
                    }
                    return;
                }
                DataRow foucesRow = gridviewRecordNoOnFile.GetDataRow(fouceRowIndex);

                //edit by wyt 2012-11-09 新建病历显示窗口
                string noOfFirstPage = foucesRow["NOOFINPAT"].ToString();
                //设置文书录入左侧菜单图标状态
                FloderState floaderState = FloderState.None;
                if (DS_BaseService.CheckIfQuatityControlPerson(DS_Common.currentUser.Id))
                {
                    floaderState = FloderState.FirstPage;
                }
                EmrBrowser frm = new EmrBrowser(noOfFirstPage, SqlUtil.App, floaderState);
                frm.StartPosition = FormStartPosition.CenterParent;
                //添加窗体关闭事件 add by cyq 2012-12-06
                frm.FormClosed += new FormClosedEventHandler(EmrBrowser_FormClosed);
                frm.ShowDialog();
                //移除窗体关闭事件 add by cyq 2012-12-06
                frm.FormClosed -= new FormClosedEventHandler(EmrBrowser_FormClosed);

                #region 取消加载插件方式显示病历 edit by wyt 2012-11-09
                //SqlUtil.App.ChoosePatient(Convert.ToDecimal(noOfInpat));
                //SqlUtil.App.LoadPlugIn("DrectSoft.Core.MainEmrPad.dll", "DrectSoft.Core.MainEmrPad.MainForm");
                #endregion

                //HistoryRecordBrowser frmHistoryRecordBrowser = new HistoryRecordBrowser(PatID);
                //frmHistoryRecordBrowser.ShowDialog();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Exemplo n.º 16
0
 /// <summary>
 /// 病案室人员编辑首页(未归档)
 /// <auth>Yanqiao.Cai</auth>
 /// <date>2012-12-05</date>
 /// </summary>
 /// <param name="noofinpat">首页序号</param>
 /// <return></return>
 private void InitFirstPageEditFlag(string noofinpat)
 {
     try
     {
         if (!string.IsNullOrEmpty(m_Host.FloderState) && (FloderState)Enum.Parse(typeof(FloderState), m_Host.FloderState) == FloderState.FirstPage)
         {
             editFlag = DS_BaseService.CheckIfQuatityControlPerson(DS_Common.currentUser.Id);
             ///如果是病案人员则继续判断是否为未归档病历
             if (editFlag)
             {
                 IsShowBackRecord = DS_BaseService.CheckRecordRebacked(noofinpat);
             }
         }
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
Exemplo n.º 17
0
 /// <summary>
 /// 根据配置项设置工具栏是否自动隐藏
 /// </summary>
 private void SetDockPanelHidden()
 {
     try
     {
         //dockPanel1.Dock = DevExpress.XtraBars.Docking.DockingStyle.Right;
         if (DS_BaseService.IsShowThisMD("IsShowDockPanel", "Nurse"))
         {
             dockPanel2.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
         }
         else
         {
             dockPanel2.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 18
0
        /// <summary>
        /// 初始化病种组合
        /// <auth>Yanqiao.Cai</auth>
        /// <date>2013-01-10</date>
        /// </summary>
        private void InitDiseaseGroup()
        {
            try
            {
                this.lookUpWindowInDiagGroup.SqlHelper  = sql_Helper;
                this.lookUpWindowOutDiagGroup.SqlHelper = sql_Helper;
                DataTable diseaseGroupDT = DS_BaseService.GetDiseaseGroupsByUserID(DS_Common.currentUser.Id);
                if (null == diseaseGroupDT || diseaseGroupDT.Rows.Count == 0)
                {
                    if (!diseaseGroupDT.Columns.Contains("ID"))
                    {
                        diseaseGroupDT.Columns.Add("ID");
                    }
                    if (!diseaseGroupDT.Columns.Contains("NAME"))
                    {
                        diseaseGroupDT.Columns.Add("NAME");
                    }
                    if (!diseaseGroupDT.Columns.Contains("PY"))
                    {
                        diseaseGroupDT.Columns.Add("PY");
                    }
                    if (!diseaseGroupDT.Columns.Contains("WB"))
                    {
                        diseaseGroupDT.Columns.Add("WB");
                    }
                }
                diseaseGroupDT.Columns["NAME"].Caption = "诊断组合";

                Dictionary <string, int> cols = new Dictionary <string, int>();
                cols.Add("NAME", lookUpEditorInDiagGroup.Width);

                SqlWordbook inGroupWordBook  = new SqlWordbook("queryname", diseaseGroupDT, "ID", "NAME", cols, "NAME//PY//WB");
                SqlWordbook outGroupWordBook = new SqlWordbook("queryname", diseaseGroupDT, "ID", "NAME", cols, "NAME//PY//WB");
                this.lookUpEditorInDiagGroup.SqlWordbook  = inGroupWordBook;
                this.lookUpEditorOutDiagGroup.SqlWordbook = outGroupWordBook;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Exemplo n.º 19
0
        /// <summary>
        /// 根据登陆人科室权限查询未归档病人
        /// </summary>
        /// <param name="userid"></param>
        /// <returns></returns>
        public static string GetAllUnRebackRecordsByDeptRights(string userid)
        {
            try
            {
                if (string.IsNullOrEmpty(userid))
                {
                    return("");
                }
                string deptStr = string.Empty;
                if (userid != "00")
                {
                    List <string[]> list = DS_BaseService.GetDeptAndWardInRight(userid);
                    if (null != list && list.Count() > 0)
                    {
                        deptStr = DS_Common.CombineSQLStringByList(list.Select(p => p[0]).ToList());
                    }
                }
                //修改语句 更据病人表查询未归档病人 无需更据病历表
                string sqlStr = @"select distinct a.patid, a.noofinpat, a.NAME patname, a.PY, a.WB, a.sexid sex,a.agestr, b.NAME sexname, a.outbed bedid, trim(c.Name) admitdeptname, trim(d.name) outdeptname, substr(a.admitdate, 1, 16) as admitdate,substr(a.inwarddate, 1, 16) as inwarddate
   from inpatient a  LEFT JOIN inpatientchangeinfo i on i.noofinpat = a.noofinpat  LEFT JOIN dictionary_detail b   ON b.detailid = a.sexid and b.categoryid = '3'
  LEFT JOIN department c  ON a.admitdept = c.id
  LEFT JOIN department d ON a.outhosdept = d.id
 where (a.islock=4700 or a.islock=4702 or a.islock is null) ";

                deptStr = string.IsNullOrEmpty(deptStr) ? ("'" + DS_Common.currentUser.CurrentDeptId + "'") : deptStr;
                List <string> jobList = DS_BaseService.GetRolesByUserID(userid);
                if (null == jobList || jobList.Count() == 0 || (!jobList.Contains("66") && !jobList.Contains("111")))
                {
                    sqlStr += " and (i.newdeptid in(" + deptStr + ") or a.outhosdept in(" + deptStr + ")) ";// " and a.outhosdept in(" + (string.IsNullOrEmpty(deptStr) ? YD_Common.currentUser.CurrentDeptId : deptStr) + ") ";
                }
                sqlStr += " order by admitdeptname asc,admitdate desc,inwarddate desc ";

                return(sqlStr);
            }
            catch (Exception ex)
            {
                throw new Exception("GetAllUnRebackRecordsByDeptRights" + ex.Message);
            }
        }
Exemplo n.º 20
0
 /// <summary>
 /// 刷新数据 --- 病种组合列表
 /// </summary>
 /// <auth>Yanqiao.Cai</auth>
 /// <date>2012-12-28</date>
 private void RefreashGroupsData()
 {
     try
     {
         DataTable dt = DS_SqlService.GetDiseaseGroups();
         dt.Columns.Add("DiseasesGroup");
         if (null != dt && dt.Rows.Count > 0)
         {
             foreach (DataRow drow in dt.Rows)
             {
                 drow["DiseasesGroup"] = DS_BaseService.GetDiseaseStringByGroupID(int.Parse(drow["ID"].ToString()));
             }
         }
         string searchStr = this.txt_search.Text.Trim().Replace("'", "''");
         string filter    = string.Format(" NAME like '%{0}%' or PY like '%{0}%' or WB like '%{0}%' or DiseasesGroup like '%{0}%' or MEMO like '%{0}%' ", searchStr);
         dt.DefaultView.RowFilter           = filter;
         this.gridControl_groups.DataSource = dt;
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
Exemplo n.º 21
0
 /// <summary>
 /// 弹出窗体关闭事件
 /// 1、若当前所编辑病历记录已归档,则移除该记录
 /// </summary>
 /// <auth>Yanqiao.Cai</auth>
 /// <date>2012-12-06</date>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void EmrBrowser_FormClosed(object sender, FormClosedEventArgs e)
 {
     try
     {
         if (gridviewRecordNoOnFile.FocusedRowHandle < 0)
         {
             return;
         }
         DataRow foucesRow = gridviewRecordNoOnFile.GetDataRow(gridviewRecordNoOnFile.FocusedRowHandle);
         if (null == foucesRow || null == foucesRow["NOOFINPAT"])
         {
             return;
         }
         if (!DS_BaseService.CheckRecordRebacked(foucesRow["NOOFINPAT"].ToString()))
         {//若当前所编辑病历记录已归档,则移除该记录
             gridviewRecordNoOnFile.DeleteRow(gridviewRecordNoOnFile.FocusedRowHandle);
         }
     }
     catch (Exception ex)
     {
         DrectSoft.Common.Ctrs.DLG.MyMessageBox.Show(1, ex);
     }
 }
Exemplo n.º 22
0
 internal bool CheckExistRecordDetail(int id, string theTime)
 {
     try
     {
         bool boo = false;
         if (string.IsNullOrEmpty(theTime))
         {
             return(boo);
         }
         theTime = DateTime.Parse(theTime).ToString("yyyy-MM-dd HH:mm:ss");
         string content = DS_SqlService.GetRecordContentsByID(id);
         if (!string.IsNullOrEmpty(content.Trim()))
         {
             XmlDocument doc = new XmlDocument();
             doc.LoadXml(content);
             List <string> list       = DS_BaseService.GetEditEmrContentTimes(doc);
             string        theTitle   = DS_BaseService.GetEmrRecordTitle(doc, theTime);
             string        nextTime   = list.Where(p => DateTime.Parse(p) > DateTime.Parse(theTime)).OrderBy(q => DateTime.Parse(q)).FirstOrDefault();
             string        nextTitle  = !string.IsNullOrEmpty(nextTime) ? DS_BaseService.GetEmrRecordTitle(doc, nextTime) : "</body></document>";
             int           startIndex = doc.InnerXml.IndexOf(theTitle);
             int           endIndex   = doc.InnerXml.IndexOf(nextTitle);
             if (startIndex < 0 || endIndex < 0 || startIndex > endIndex)
             {
                 return(boo);
             }
             if (!string.IsNullOrEmpty(doc.InnerXml.Substring(startIndex, endIndex - startIndex)))
             {
                 boo = true;
             }
         }
         return(boo);
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
Exemplo n.º 23
0
        private Inpatient CurrentInpatient;//add by ywk

        /// <summary>
        /// 确定事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_OK_Click(object sender, EventArgs e)
        {
            try
            {
                //设置当前病人(修复m_App病人丢失问题)
                if (null == m_App || null == m_App.CurrentPatientInfo || m_App.CurrentPatientInfo.NoOfFirstPage.ToString() != m_IemInfo.IemBasicInfo.NoOfInpat)
                {
                    CurrentInpatient = DS_SqlService.GetPatientInfo(m_IemInfo.IemBasicInfo.NoOfInpat);
                }
                else
                {
                    CurrentInpatient = m_App.CurrentPatientInfo;
                }

                GetUI();
                //edit by 2012-12-20 张业兴 关闭弹出框只关闭提示框
                //((ShowUC)this.Parent).Close(true, m_IemInfo);
                //病案首页费用,确认后加到电子病历的表中 add by ywk 2012年10月16日 18:41:57
                //CurrentInpatient = m_App.CurrentPatientInfo;
                if (null != CurrentInpatient)
                {
                    CurrentInpatient.ReInitializeAllProperties();
                }
                IemMainPageManger manger = new IemMainPageManger(m_App, CurrentInpatient);
                manger.SaveData(m_IemInfo);

                //add by cyq 2012-12-05 病案室人员编辑后状态改为已归档
                if (editFlag)
                {
                    DS_BaseService.SetRecordsRebacked(int.Parse(CurrentInpatient.NoOfFirstPage.ToString().Trim()));
                }
            }
            catch (Exception ex)
            {
                DrectSoft.Common.Ctrs.DLG.MyMessageBox.Show(1, ex);
            }
        }
Exemplo n.º 24
0
        private Inpatient CurrentInpatient;//add by ywk
        private void btn_OK_Click(object sender, EventArgs e)
        {
            try
            {
                //设置当前病人(修复m_App病人丢失问题)
                if (null == m_App || null == m_App.CurrentPatientInfo || m_App.CurrentPatientInfo.NoOfFirstPage.ToString() != m_IemInfo.IemBasicInfo.NoOfInpat)
                {
                    CurrentInpatient = DS_SqlService.GetPatientInfo(m_IemInfo.IemBasicInfo.NoOfInpat);
                }
                else
                {
                    CurrentInpatient = m_App.CurrentPatientInfo;
                }

                //edit by 2012-12-20 张业兴 关闭弹出框只关闭提示框
                //((ShowUC)this.Parent).Close(true, m_IemInfo);
                //点击确认按钮就将数据更新到数据库
                //CurrentInpatient = m_App.CurrentPatientInfo;
                if (null != CurrentInpatient)
                {
                    CurrentInpatient.ReInitializeAllProperties();
                }
                IemMainPageManger manger = new IemMainPageManger(m_App, CurrentInpatient);
                manger.SaveData(m_IemInfo);

                //add by cyq 2012-12-05 病案室人员编辑后状态改为已归档
                if (editFlag)
                {
                    DS_BaseService.SetRecordsRebacked(int.Parse(CurrentInpatient.NoOfFirstPage.ToString().Trim()));
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Exemplo n.º 25
0
        private void LoadPatView()
        {
            if (gridViewDetail.FocusedRowHandle < 0)
            {
                return;
            }
            DataRow foucesRow = gridViewDetail.GetDataRow(gridViewDetail.FocusedRowHandle);

            if (foucesRow == null)
            {
                return;
            }

            if (foucesRow.IsNull("NOOFINPAT"))
            {
                return;
            }

            m_app.ChoosePatient(Convert.ToDecimal(foucesRow["NOOFINPAT"].ToString()));
            if (m_app.CurrentPatientInfo != null)
            {
                m_app.LoadPlugIn("DrectSoft.Core.MainEmrPad.dll", DS_BaseService.GetUCEmrInputPath());
            }
        }
Exemplo n.º 26
0
        /// <summary>
        /// 窗体加载事件
        /// edit by Yanqiao.Cai 2012-11-05
        /// 1、add try ... catch
        /// 2、封装初始化方法
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void UCRecordNoOnFile_Load(object sender, EventArgs e)
        {
            try
            {
                //edit by cyq 2012-12-04
                //IntiRecordID();
                //InitName();
                InitDepartment();
                InitDiag();
                InitPhysician();
                //获取病历状态
                SqlUtil.GetDictionarydetail(lookUpRecordStatus, "1", "47", "usp_GetRecordManageFrm");

                //add by cyq 2012-12-23 病案室人员显示归档按钮
                this.btn_reback.Visible = DS_BaseService.CheckIfQuatityControlPerson(DS_Common.currentUser.Id);

                Reset();
                this.ActiveControl = txt_recordID;
            }
            catch (Exception ex)
            {
                DrectSoft.Common.Ctrs.DLG.MyMessageBox.Show(1, ex);
            }
        }
Exemplo n.º 27
0
        private void InitSqlWorkBook()
        {
            try
            {
                lookUpWindowDepartment.SqlHelper = sql_Helper;
                //科室
                DataTable Dept = sql_Helper.ExecuteDataTable("usp_GetMedicalRrecordViewFrm",
                                                             new SqlParameter[] { new SqlParameter("@GetType", "1") }, CommandType.StoredProcedure);
                Dept.Columns["ID"].Caption   = "科室编码";
                Dept.Columns["NAME"].Caption = "科室名称";
                Dictionary <string, int> cols = new Dictionary <string, int>();
                cols.Add("ID", 60);
                cols.Add("NAME", 120);
                SqlWordbook deptWordBook = new SqlWordbook("querybook", Dept, "ID", "NAME", cols, "ID//NAME//PY//WB");
                lookUpEditorDepartment.SqlWordbook = deptWordBook;
                lookUpEditorDepartment.CodeValue   = DS_Common.currentUser.CurrentDeptId;

                //诊断
                this.lookUpWindowInDiag.SqlHelper      = sql_Helper;
                this.lookUpWindowOutDiag.SqlHelper     = sql_Helper;
                this.lookUpWindowCurrentDiag.SqlHelper = sql_Helper;
                Dictionary <string, int> col = new Dictionary <string, int>();
                //edit by cyq 2013-01-07 新版&老板主诊医师(配置)
                DataTable   diagDt = new DataTable();
                string      config = DS_SqlService.GetConfigValueByKey("ImportDiseasesGroupHistoryData");
                XmlDocument doc    = new XmlDocument();
                if (!string.IsNullOrEmpty(config))
                {
                    doc.LoadXml(config);
                }
                XmlNodeList nodeList = doc.GetElementsByTagName("isnew");
                string      isnew    = string.Empty;
                if (null != nodeList && nodeList.Count > 0)
                {
                    isnew = nodeList[0].InnerText;
                }
                if (!string.IsNullOrEmpty(isnew) && isnew.Trim() == "1")
                {//新版主诊医师
                    diagDt = DS_BaseService.GetDiagResourceByUserID(DS_Common.currentUser.Id);
                    if (null == diagDt || diagDt.Rows.Count == 0)
                    {
                        if (!diagDt.Columns.Contains("ICD"))
                        {
                            diagDt.Columns.Add("ICD");
                        }
                        if (!diagDt.Columns.Contains("NAME"))
                        {
                            diagDt.Columns.Add("NAME");
                        }
                        if (!diagDt.Columns.Contains("PY"))
                        {
                            diagDt.Columns.Add("PY");
                        }
                        if (!diagDt.Columns.Contains("WB"))
                        {
                            diagDt.Columns.Add("WB");
                        }
                    }
                    diagDt.Columns["ICD"].Caption  = "诊断编码";
                    diagDt.Columns["NAME"].Caption = "诊断名称";
                    col.Add("ICD", 60);
                    col.Add("NAME", 120);
                    SqlWordbook inWordBook = new SqlWordbook("inDiag", diagDt, "ICD", "NAME", col, "ICD//NAME//PY//WB");
                    this.lookUpEditorInDiag.SqlWordbook = inWordBook;
                    SqlWordbook outWordBook = new SqlWordbook("outDiag", diagDt, "ICD", "NAME", col, "ICD//NAME//PY//WB");
                    this.lookUpEditorOutDiag.SqlWordbook = outWordBook;
                    SqlWordbook currentWordBook = new SqlWordbook("curDiag", diagDt, "ICD", "NAME", col, "ICD//NAME//PY//WB");
                    this.lookUpEditorCurrentDiag.SqlWordbook = currentWordBook;
                }
                else
                {//原版主诊医师
                    #region 原诊断数据集
                    DataTable diagofuser = new DataTable();
                    diagofuser.Columns.Add("ICD");
                    diagofuser.Columns.Add("DIAGNOSIS");
                    diagofuser.Columns.Add("PY");
                    diagofuser.Columns.Add("WB");
                    diagofuser.Columns["ICD"].Caption       = "诊断编码";
                    diagofuser.Columns["DIAGNOSIS"].Caption = "诊断名称";
                    DataTable diag = sql_Helper.ExecuteDataTable("usp_getdiagbyattendphysician",
                                                                 new SqlParameter[] { new SqlParameter("@USERID", m_app.User.Id) }, CommandType.StoredProcedure);
                    if (diag.Rows.Count != 0)
                    {
                        string   diagnames = diag.Rows[0][0].ToString();
                        string[] name      = diagnames.Split(',');
                        for (int i = 0; i < name.Length; i++)
                        {
                            if (name[i].Trim() != "")
                            {
                                if (name[i].Trim().Contains("$"))
                                {
                                    string[] str = name[i].Split('$');
                                    DataRow  dr  = diagofuser.NewRow();
                                    dr[0] = str[0];
                                    dr[1] = str[1];
                                    diagofuser.Rows.Add(dr);
                                }
                                else if (name[i].Trim().Contains("-"))
                                {
                                    string[] str = name[i].Split('-');
                                    DataRow  dr  = diagofuser.NewRow();
                                    dr[0] = str[0];
                                    dr[1] = str[1];
                                    diagofuser.Rows.Add(dr);
                                }
                            }
                        }
                    }
                    #endregion

                    diagDt = diagofuser;
                    new GenerateShortCode(sql_Helper).AutoAddShortCode(diagDt, "DIAGNOSIS");
                    col.Add("ICD", 60);
                    col.Add("DIAGNOSIS", 120);
                    SqlWordbook inWordBook = new SqlWordbook("inDiag", diagDt, "ICD", "DIAGNOSIS", col, "ICD//DIAGNOSIS//PY//WB");
                    this.lookUpEditorInDiag.SqlWordbook = inWordBook;
                    SqlWordbook outWordBook = new SqlWordbook("outDiag", diagDt, "ICD", "DIAGNOSIS", col, "ICD//DIAGNOSIS//PY//WB");
                    this.lookUpEditorOutDiag.SqlWordbook = outWordBook;
                    SqlWordbook currentWordBook = new SqlWordbook("curDiag", diagDt, "ICD", "DIAGNOSIS", col, "ICD//DIAGNOSIS//PY//WB");
                    this.lookUpEditorCurrentDiag.SqlWordbook = currentWordBook;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Exemplo n.º 28
0
        /// <summary>
        /// 刷新数据 --- 组合权限列表
        /// </summary>
        /// <auth>Yanqiao.Cai</auth>
        /// <date>2013-01-06</date>
        private void SearchRightData()
        {
            try
            {
                DataRow drow = gridView_user.GetDataRow(gridView_user.FocusedRowHandle);
                if (null == drow)
                {
                    this.gridControl_groupRight.DataSource = new DataTable();
                    return;
                }
                //查询所有组合
                DataTable dt = DS_SqlService.GetDiseaseGroups();
                //添加组合病种显示列
                dt.Columns.Add("DiseasesGroup");
                if (null != dt && dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        dr["DiseasesGroup"] = DS_BaseService.GetDiseaseStringByGroupID(int.Parse(dr["ID"].ToString()));
                    }
                }
                //添加组合权限列
                dt.Columns.Add(new DataColumn("FLAG", typeof(bool)));
                DataRow[] listArry = dt.Select(" 1=1 ");
                if (allSource.Rows.Count == 0)
                {
                    allSource = listArry.Length == 0 ? new DataTable() : listArry.CopyToDataTable();
                }
                //筛选条件
                string searchStr = this.txt_searchRight.Text.ToUpper();//.Replace("'","''");

                checkedList.Clear();
                notCheckedList.Clear();
                //此用户权限内的组合ID集合
                List <string> idList = DS_BaseService.GetDiseaseGroupIDsByUserID(drow["USERID"].ToString().Trim());
                if (null == idList || idList.Count == 0)
                {//此用户没有组合权限
                    foreach (DataRow dr in listArry)
                    {
                        dr["FLAG"] = false;
                    }
                    notCheckedList = listArry.Where(p => p["NAME"].ToString().ToUpper().Contains(searchStr) || p["PY"].ToString().ToUpper().Contains(searchStr) || p["WB"].ToString().ToUpper().Contains(searchStr) || p["DiseasesGroup"].ToString().ToUpper().Contains(searchStr)).OrderBy(q => q["NAME"]).ToList();
                }
                else
                {
                    //已勾选项 不过滤
                    var checkedEnu = listArry.Where(p => null != p["ID"] && idList.Contains(p["ID"].ToString().Trim())).OrderBy(q => q["NAME"]);
                    foreach (DataRow dr in checkedEnu)
                    {
                        dr["FLAG"] = true;
                        checkedList.Add(dr);
                    }
                    //对未勾选项进行过滤
                    var notCheckedEnu = listArry.Where(p => null != p["ID"] && !idList.Contains(p["ID"].ToString().Trim()) && (p["NAME"].ToString().ToUpper().Contains(searchStr) || p["PY"].ToString().ToUpper().Contains(searchStr) || p["WB"].ToString().ToUpper().Contains(searchStr) || p["DiseasesGroup"].ToString().ToUpper().Contains(searchStr))).OrderBy(q => q["NAME"]);
                    foreach (DataRow dr in notCheckedEnu)
                    {
                        dr["FLAG"] = false;
                        notCheckedList.Add(dr);
                    }
                }
                List <DataRow> unionList = checkedList.Union(notCheckedList).ToList();
                DataTable      endDt     = (null == unionList || unionList.Count() == 0) ? new DataTable() : unionList.CopyToDataTable();
                defaultSource = endDt.Copy();
                this.gridControl_groupRight.DataSource = endDt;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Exemplo n.º 29
0
        /// <summary>
        /// Modify by xlb 2013-04-22西医诊断先填充左侧再填充右侧
        /// </summary>
        /// <returns></returns>
        public DataSet CreateDataTable()
        {
            try
            {
                DataSet   dts             = new DataSet();
                DataTable outDiagTable    = new DataTable();
                DataTable newoutDiagTable = null;// new DataTable();
                outDiagTable = DS_BaseService.AddColsDataToDataTable(m_IemMainPageEntity.IemDiagInfo.OutDiagTable).Copy();
                //if (outDiagTable != null && outDiagTable.Rows.Count > 0)
                //{
                //    outDiagTable.Rows.RemoveAt(0);
                //}
                if (newoutDiagTable == null)
                {
                    newoutDiagTable = outDiagTable.Copy();//声明一个用于存放去除了门急诊诊断的数据 add by ywk2012年6月4日 11:52:49
                }

                if (outDiagTable.Rows.Count > 0)
                {
                    outDiagTable.DefaultView.RowFilter = " Diagnosis_Type_ID<>'13'";
                    newoutDiagTable = outDiagTable.DefaultView.ToTable().Copy();;
                }

                DataTable dtDialog = new DataTable();
                dtDialog.TableName = "outDiagTable";
                dtDialog.Columns.Add("Diagnosis_NameA");
                dtDialog.Columns.Add("Diagnosis_CodeA");
                dtDialog.Columns.Add("Status_IdA");
                dtDialog.Columns.Add("Diagnosis_NameB");
                dtDialog.Columns.Add("Diagnosis_CodeB");
                dtDialog.Columns.Add("Status_IdB");
                dtDialog.Columns.Add("Status_Id_OutA");
                dtDialog.Columns.Add("Status_Id_OutB");
                for (int i = 0; i < 9; i++)
                {
                    DataRow dr = dtDialog.NewRow();
                    if (i == 0)
                    {
                        dr["Diagnosis_NameA"] = "主要诊断:";
                        dr["Diagnosis_NameB"] = "其他诊断:";
                    }
                    else if (i == 1)
                    {
                        dr["Diagnosis_NameA"] = "其他诊断:";
                        dr["Diagnosis_NameB"] = "";
                    }
                    dtDialog.Rows.Add(dr);
                }
                for (int i = 0; i < newoutDiagTable.Rows.Count; i++) //遍历诊断表
                {
                    if (i == 0)                                      //第一行为主要诊断其余则其他诊断
                    {
                        newoutDiagTable.Rows[i]["Diagnosis_Name"] = "主要诊断:" + newoutDiagTable.Rows[i]["Diagnosis_Name"];
                    }
                    else if (i == 1 || i == 9) //其他诊断不是每一个都要添加
                    {
                        newoutDiagTable.Rows[i]["Diagnosis_Name"] = "其他诊断:" + newoutDiagTable.Rows[i]["Diagnosis_Name"];
                    }
                    if (i <= 8)//1到9行填充左边
                    {
                        dtDialog.Rows[i]["Diagnosis_NameA"] = newoutDiagTable.Rows[i]["Diagnosis_Name"];
                        dtDialog.Rows[i]["Diagnosis_CodeA"] = newoutDiagTable.Rows[i]["Diagnosis_Code"];
                        dtDialog.Rows[i]["Status_IdA"]      = newoutDiagTable.Rows[i]["Status_Id"];
                        dtDialog.Rows[i]["Status_Id_OutA"]  = newoutDiagTable.Rows[i]["Status_Id_Out"];
                    }
                    else if (i <= 17)//10到18行填充右侧,超过则不处理
                    {
                        dtDialog.Rows[i - 9]["Diagnosis_NameB"] = newoutDiagTable.Rows[i]["Diagnosis_Name"];
                        dtDialog.Rows[i - 9]["Diagnosis_CodeB"] = newoutDiagTable.Rows[i]["Diagnosis_Code"];
                        dtDialog.Rows[i - 9]["Status_IdB"]      = newoutDiagTable.Rows[i]["Status_Id"];
                        dtDialog.Rows[i - 9]["Status_Id_OutB"]  = newoutDiagTable.Rows[i]["Status_Id_Out"];
                    }
                }
                dts.Tables.Add(dtDialog);
                DataTable operationTable = m_IemMainPageEntity.IemOperInfo.Operation_Table.Clone();
                operationTable.TableName = "operationTable";
                DataTable dtOperationTable = m_IemMainPageEntity.IemOperInfo.Operation_Table;
                //界面只显示八行注原方法有问题xlb 2013-04-22
                for (int i = 0; i < 8; i++)
                {
                    DataRow dataRow = operationTable.NewRow();
                    operationTable.Rows.Add(dataRow);
                }
                if (dtOperationTable != null || dtOperationTable.Rows.Count > 0)
                {
                    for (int i = 0; i < dtOperationTable.Rows.Count; i++)
                    {
                        if (i <= 7)
                        {
                            operationTable.Rows[i].ItemArray = dtOperationTable.Rows[i].ItemArray;
                        }
                    }
                }

                dts.Tables.Add(operationTable);
                return(dts);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 30
0
        /// <summary>
        /// 导入处理过的病历---优化(转科)
        /// </summary>
        /// <auth>Yanqiao.Cai</auth>
        /// <date>2013-02-20</date>
        /// <param name="dt"></param>
        private void ProcEMRNew(DataTable dt)
        {
            try
            {
                DS_Common.SetWaitDialogCaption(m_WaitDialog, "正在处理历史病历...");
                string userID   = m_App.User.Id;
                string userName = m_App.User.Name;
                int    day      = 0;

                List <DataRow> allRecords = new List <DataRow>();
                //【1】初始化病例信息
                dt.Columns.Add("captiondatetimeTemp");
                foreach (DataRow dr in dt.Rows)
                {
                    dr["noofinpat"]  = m_CurrentInpatient.NoOfFirstPage.ToString();
                    dr["owner"]      = userID;
                    dr["createtime"] = CurrentDateTime;
                    dr["auditor"]    = "";
                    dr["audittime"]  = null;
                    dr["hassubmit"]  = "4600";
                    dr["hasprint"]   = "3600";
                    dr["hassign"]    = "0";
                    dr["islock"]     = "4700";
                    dr["ip"]         = DS_Common.GetIPHost();
                    dr["departcode"] = DS_Common.currentUser.CurrentDeptId;
                    dr["wardcode"]   = DS_Common.currentUser.CurrentWardId;

                    if (dr["sortid"].ToString() == ContainerCatalog.BingChengJiLu)//针对病程需要特殊处理,每份病例的时间间距是1天
                    {
                        string bingChenDateTime = Convert.ToDateTime(CurrentDateTime).AddDays(day).ToString("yyyy-MM-dd HH:mm:ss");
                        day++;
                        dr["name"] = dr["name"].ToString().Split(' ')[0] + ' ' + bingChenDateTime + ' ' + userName;
                        dr["captiondatetimeTemp"] = bingChenDateTime;
                    }
                    else
                    {
                        dr["name"]            = dr["name"].ToString().Split(' ')[0] + ' ' + CurrentDateTime + ' ' + userName;
                        dr["captiondatetime"] = CurrentDateTime;
                    }
                    allRecords.Add(dr);
                }
                //【2】处理病历记录和首程内容
                ///获取病例中所有首次病程
                var firstRecords = allRecords.Where(p => p["sortid"].ToString() == ContainerCatalog.BingChengJiLu && p["FIRSTDAILYFLAG"].ToString() == "1");
                ///获取所有病历内容集合(包含header和footer,包含所有首次病程中的病历)
                List <string[]> allRecordContents = new List <string[]>();
                if (null != firstRecords && firstRecords.Count() > 0)
                {
                    for (int i = 0; i < firstRecords.Count(); i++)
                    {
                        DataRow     firstRecord = firstRecords.ElementAt(i);
                        XmlDocument xmlRecord   = NewXmlDocument(firstRecord["content"].ToString());
                        if (null != allRecordContents && allRecordContents.Count() > 0)
                        {
                            List <string[]> thisRecordContents = DS_BaseService.GetRecoedsByXML(xmlRecord);
                            if (null != thisRecordContents && thisRecordContents.Count() > 0)
                            {
                                var onlyRecordContents = thisRecordContents.Where(p => p[0] != "header" && p[0] != "footer");
                                allRecordContents = allRecordContents.AsEnumerable().Union(onlyRecordContents).ToList();
                            }
                        }
                        else
                        {
                            allRecordContents = DS_BaseService.GetRecoedsByXML(xmlRecord);
                        }
                    }
                    ///将首次病程设为普通病历(非首次病程)
                    firstRecords = SetFirstDailyToDaily(firstRecords);
                }
                ///获取所有病历内容对应的时间集合
                List <string> xmlRecordTimes = allRecordContents.Select(p => p[0]).ToList();
                ///去除病例中无内容的节点
                allRecords = allRecords.Where(p => (p["sortid"].ToString() != ContainerCatalog.BingChengJiLu && !string.IsNullOrEmpty(p["content"].ToString())) || (p["sortid"].ToString() == ContainerCatalog.BingChengJiLu && xmlRecordTimes.Contains(p["captiondatetime"].ToString()))).OrderBy(q => DateTime.Parse(q["captiondatetime"].ToString())).ToList();
                ///首次病程内容
                string newEMRContent = string.Empty;
                ///获取过滤后的病程记录
                var emrRecords = allRecords.Where(p => p["sortid"].ToString() == ContainerCatalog.BingChengJiLu).OrderBy(q => DateTime.Parse(q["captiondatetime"].ToString()));
                ///需要过滤(去除)的病历时间
                List <string> toDeleteTime = new List <string>();
                foreach (DataRow emr in emrRecords)
                {
                    string[] contentArray = allRecordContents.FirstOrDefault(p => p[0] == emr["captiondatetime"].ToString());
                    if (null == contentArray || string.IsNullOrEmpty(contentArray[1].Trim()))
                    {
                        toDeleteTime.Add(emr["captiondatetime"].ToString());
                        continue;
                    }
                    string newContent = SetCaptionTime(emr["captiondatetime"].ToString(), emr["captiondatetimeTemp"].ToString(), contentArray[1]);
                    if (!string.IsNullOrEmpty(newContent.Trim()))
                    {
                        newEMRContent         += newContent;
                        emr["captiondatetime"] = emr["captiondatetimeTemp"];
                    }
                    else
                    {
                        toDeleteTime.Add(emr["captiondatetime"].ToString());
                    }
                }
                if (null != toDeleteTime && toDeleteTime.Count > 0)
                {
                    allRecords = allRecords.Where(p => !toDeleteTime.Contains(p["captiondatetime"].ToString())).OrderBy(q => DateTime.Parse(q["captiondatetime"].ToString())).ToList();
                }
                if (null != allRecordContents && allRecordContents.Count() > 0)
                {
                    string[] header = allRecordContents.FirstOrDefault(p => p[0] == "header");
                    if (null != header && !string.IsNullOrEmpty(header[1]))
                    {
                        newEMRContent = header[1] + newEMRContent;
                    }
                    string[] footer = allRecordContents.FirstOrDefault(p => p[0] == "footer");
                    if (null != footer && !string.IsNullOrEmpty(footer[1]))
                    {
                        newEMRContent += footer[1];
                    }
                }
                if (null != emrRecords && emrRecords.Count() > 0)
                {
                    DataRow firstEmr = emrRecords.FirstOrDefault();
                    if (null != firstEmr)
                    {
                        firstEmr["FIRSTDAILYFLAG"] = "1";
                        firstEmr["content"]        = newEMRContent;
                    }
                }

                //【3】保存到数据库
                DS_Common.SetWaitDialogCaption(m_WaitDialog, "正在保存病历...");
                SaveRecordsInTran(allRecords);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }