/// <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; } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
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()); }
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()); }
/// <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; } }
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()); } } }
/// <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; } }
/// <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); } }
/// <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); } }
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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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; } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
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); } }
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); } }
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); } }
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()); } }
/// <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); } }
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); } }
/// <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); } }
/// <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; } }
/// <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); } }