using System; using System.Drawing; using System.ComponentModel; using System.Windows.Forms; using System.Collections.Generic; using CLIP.eForm.Consent.Dfh.UI.HospitalSvcRef; namespace CLIP.eForm.Consent.Dfh.UI { /// /// 환자목록 > 환자검색 탭 클래스 /// /// ///

[설계자]

///

클립소프트 연구소 홍지철 (jchong@clipsoft.co.kr)

///

[원본 작성자]

///

클립소프트 기술부 이인희

///

[수정 작성자]

///

///

----------------------------------------------------------------------------------------

///

[HISTORY]

///

2016-07-11 : 최초작성

///

----------------------------------------------------------------------------------------

///
public partial class PatientSelectTabSearchPatient : UserControl { private IConsentMain consentMain = null; private HospitalSvcRef.HospitalSvcSoapClient hospitalWebService = null; public PatientSelectTabSearchPatient() { InitializeComponent(); } private void PatientSelectTabSearchPatient_Load(object sender, EventArgs e) { Boolean isInWpfDesignerMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime); Boolean isInFormsDesignerMode = (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv"); if (isInWpfDesignerMode || isInFormsDesignerMode) { // is in any designer mode return; } if (this.DesignMode || LicenseManager.UsageMode == LicenseUsageMode.Designtime) { return; } consentMain = ConsentMainControl.GetConsentMainInterface(this); hospitalWebService = WebMethodCommon.GetHospitalWebService(consentMain.PluginExecuteInfo["hospitalSvcUrl"]); this.dateTimePickerClnDate.Value = DateTime.Now; InitComboBind(); InitDataGrid(); } private void InitComboBind() { // 진료과 DeptListVO[] deptList = this.hospitalWebService.GetDeptList(GetSelectGubunValue()); if (deptList != null) { this.comboDept.DisplayMember = "deptnm"; this.comboDept.ValueMember = "deptcd"; this.comboDept.DataSource = deptList; } } private void InitDataGrid() { this.dataGridViewPatientSelectResult.AutoGenerateColumns = false; this.dataGridViewPatientSelectResult.AllowUserToAddRows = false; //this.dataGridViewPatientSelectResult.CellPainting += new DataGridViewCellPaintingEventHandler(this.dataGridViewPatientSelectResult_CellPainting); this.dataGridViewPatientSelectResult.ColumnHeaderMouseClick += new DataGridViewCellMouseEventHandler(this.dataGridViewPatientSelectResult_ColumnHeaderMouseClick); this.dataGridViewPatientSelectResult.RowPostPaint += new DataGridViewRowPostPaintEventHandler(this.dataGridViewPatientSelectResult_RowPostPaint); CommonUtil.AddNewCheckBoxColumnToDataGridView(this.dataGridViewPatientSelectResult, "□", "colCheck", true, 30, DataGridViewContentAlignment.MiddleCenter); //CommonUtil.AddNewColumnToDataGridView(this.dataGridViewPatientSelectResult, "구분", "Gubun", true, 60); CommonUtil.AddNewColumnToDataGridView(this.dataGridViewPatientSelectResult, "등록번호", "pid", true, 80); CommonUtil.AddNewColumnToDataGridView(this.dataGridViewPatientSelectResult, "성명", "hngnm", true, 80); CommonUtil.AddNewColumnToDataGridView(this.dataGridViewPatientSelectResult, "진료/입원일자", "indd", true, 120); CommonUtil.AddNewColumnToDataGridView(this.dataGridViewPatientSelectResult, "진료과", "deptnm", true, 80); CommonUtil.AddNewColumnToDataGridView(this.dataGridViewPatientSelectResult, "진료의", "doctornm", true, 80); } #region 환자 조회 private void BindDataGridRows() { if (this.consentMain == null) consentMain = ConsentMainControl.GetConsentMainInterface(this); if (this.hospitalWebService == null) this.hospitalWebService = WebMethodCommon.GetHospitalWebService(consentMain.PluginExecuteInfo["hospitalSvcUrl"]); string srchdd = this.dateTimePickerClnDate.Value.ToShortDateString().Replace("-", ""); string orddeptcd = (this.comboDept.Items.Count > 0) ? this.comboDept.SelectedValue.ToString().Trim() : ""; string doctorid = (this.comboDoctor.Items.Count > 0) ? this.comboDoctor.SelectedValue.ToString().Trim() : ""; string pid = this.textBoxSearchText.Text.Trim(); string patstat = GetSelectGubunValue(); PatListVO[] resultData = hospitalWebService.GetSrPatList(srchdd, orddeptcd, doctorid, pid, patstat); if (resultData == null) { return; } this.dataGridViewPatientSelectResult.DataSource = new SortableBindingList(resultData); } private string GetSelectGubunValue() { string strGubun = ""; RadioButton rdoTemp = null; if (this.radioGubunOut.Checked) rdoTemp = radioGubunOut; else if (this.radioGubunIn.Checked) rdoTemp = radioGubunIn; else if (this.radioGubunER.Checked) rdoTemp = radioGubunER; strGubun = rdoTemp.Tag.ToString(); return strGubun; } private void comboDept_SelectedIndexChanged(object sender, EventArgs e) { // 주치의 DocListVO[] doctorList = this.hospitalWebService.GetDoctorList(DateTime.Now.ToShortDateString().Replace("-", ""), (this.comboDept.Items.Count > 0) ? this.comboDept.SelectedValue.ToString() : ""); if (doctorList != null) { this.comboDoctor.DisplayMember = "doctornm"; this.comboDoctor.ValueMember = "doctorid"; this.comboDoctor.DataSource = doctorList; } } private void buttonPatientSelect_Click(object sender, EventArgs e) { Cursor currentCursor = this.Cursor; try { this.Cursor = Cursors.WaitCursor; BindDataGridRows(); } catch (Exception ex) { throw ex; } finally { this.Cursor = currentCursor; } } #endregion #region 환자찾기 버튼 클릭 이벤트 private void buttonSearchPop_Click(object sender, EventArgs e) { string strTemp = this.textBoxSearchText.Text.Trim(); int iResult; if (int.TryParse(strTemp, out iResult) && strTemp.Length > 6) { this.buttonPatientSelect.PerformClick(); } else { PatientSearchPopup popup = new PatientSearchPopup(textBoxSearchText.Text); DialogResult result = popup.ShowDialog(); if (result == DialogResult.OK) { this.textBoxSearchText.Text = popup.PatientID; this.buttonPatientSelect.PerformClick(); } popup.Close(); } } private void textBoxSearchText_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { this.buttonSearchPop.PerformClick(); } } #endregion #region 그리드 이벤트 private void dataGridViewPatientSelectResult_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { if (e.ColumnIndex == 0 && e.RowIndex == -1) { Image InfoIcon; if (dataGridViewPatientSelectResult.Columns[0].HeaderText.Equals("□")) { InfoIcon = Image.FromFile(@"../../Resources/uncheck.png"); } else { InfoIcon = Image.FromFile(@"../../Resources/check.png"); } e.Paint(e.CellBounds, DataGridViewPaintParts.All); e.Graphics.DrawImage(InfoIcon, e.CellBounds); e.Handled = true; } } private void dataGridViewPatientSelectResult_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) { if (e.ColumnIndex == 0 && e.RowIndex == -1) { bool chkStatus = false; if (dataGridViewPatientSelectResult.Columns[0].HeaderText.Trim().Equals("□")) { dataGridViewPatientSelectResult.Columns[0].HeaderText = "☑"; chkStatus = true; } else { dataGridViewPatientSelectResult.Columns[0].HeaderText = "□"; } foreach (DataGridViewRow r in dataGridViewPatientSelectResult.Rows) { r.Cells["colCheck"].Value = chkStatus; } dataGridViewPatientSelectResult.RefreshEdit(); } } private void dataGridViewPatientSelectResult_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) { if (e.RowIndex >= 0) { string NumberingText = (e.RowIndex + 1).ToString(); // 글자 사이즈 구하기. SizeF stringSize = e.Graphics.MeasureString(NumberingText, Font); // 글자에 맞춰 좌표계산. PointF StringPoint = new PointF ( Convert.ToSingle(this.dataGridViewPatientSelectResult.RowHeadersWidth - 3 - stringSize.Width), Convert.ToSingle(e.RowBounds.Y) + this.dataGridViewPatientSelectResult[0, e.RowIndex].ContentBounds.Height * 0.3f ); // 문자열 그리기. e.Graphics.DrawString ( NumberingText, Font, Brushes.Black, StringPoint.X, StringPoint.Y ); } } private void dataGridViewPatientSelectResult_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex > -1) { PatListVO vo = this.dataGridViewPatientSelectResult.Rows[e.RowIndex].DataBoundItem as PatListVO; consentMain.PatientListCtrl.SetChangePID(vo); } } #endregion public void ClearCheckBox() { bool chkStatus = false; dataGridViewPatientSelectResult.Columns[0].HeaderText = "□"; foreach (DataGridViewRow r in dataGridViewPatientSelectResult.Rows) { r.Cells["colCheck"].Value = chkStatus; } dataGridViewPatientSelectResult.RefreshEdit(); } public List GetCheckPatList() { List voList = new List(); foreach (DataGridViewRow r in dataGridViewPatientSelectResult.Rows) { if (Convert.ToBoolean(r.Cells["colCheck"].Value)) { voList.Add(r.DataBoundItem as PatListVO); } } return voList; } } }