PatientListCtrl.cs 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using CLIP.eForm.Consent.UI.HospitalSvcRef;
  5. using System.Windows.Forms;
  6. namespace CLIP.eForm.Consent.UI {
  7. /// <summary>
  8. /// 환자목록 클래스
  9. /// </summary>
  10. /// <remarks>
  11. /// <p>[설계자]</p>
  12. /// <p> 클립소프트 연구소 홍지철 (jchong@clipsoft.co.kr)</p>
  13. /// <p>[원본 작성자]</p>
  14. /// <p> 클립소프트 기술부 이인희</p>
  15. /// <p>[수정 작성자]</p>
  16. /// <p> </p>
  17. /// <p>----------------------------------------------------------------------------------------</p>
  18. /// <p>[HISTORY]</p>
  19. /// <p> 2016-06-21 : 최초작성</p>
  20. /// <p>----------------------------------------------------------------------------------------</p>
  21. /// </remarks>
  22. public partial class PatientListCtrl : PatientListCtrlBase {
  23. private IConsentMain consentMain = null;
  24. public PatientListCtrl() {
  25. InitializeComponent();
  26. }
  27. private void PatientListCtrl_Load(object sender, EventArgs e) {
  28. if(this.DesignMode || LicenseManager.UsageMode == LicenseUsageMode.Designtime) {
  29. return;
  30. }
  31. consentMain = ConsentMainControl.GetConsentMainInterface(this);
  32. consentMain.OnLoadPartControls += ConsentMain_OnLoadPartControls;
  33. }
  34. private void ConsentMain_OnLoadPartControls(object sender, EventArgs e) {
  35. if(this.DesignMode) {
  36. return;
  37. }
  38. IConsentMain consentMain = ConsentMainControl.GetConsentMainInterface(this);
  39. // Ku2.0 연동 시에는 이벤트 태우지 않음
  40. if(consentMain.ConsentExecuteInfo["printYN"].Equals("Y")) {
  41. return;
  42. }
  43. pageMove_tabPageOutPatient(consentMain);
  44. SetPatientListSplitPanelVisibility(consentMain);
  45. }
  46. /// <summary>
  47. /// patientListView 의 값에 따라 PatientList 패널 활성화 여부 설정
  48. /// </summary>
  49. /// <param name="consentMain">patientListView 를 가지고 있는 consentMain 인스턴스</param>
  50. private static void SetPatientListSplitPanelVisibility(IConsentMain consentMain) {
  51. if(!(string.IsNullOrEmpty(consentMain.ConsentExecuteInfo["patientListView"])) && consentMain.ConsentExecuteInfo["patientListView"].Equals("Y")) {
  52. consentMain.SetPatientListSplitPanelVisibility(true);
  53. }
  54. else {
  55. consentMain.SetPatientListSplitPanelVisibility(false);
  56. }
  57. }
  58. /// <summary>
  59. /// 탭 변경 이벤트
  60. /// </summary>
  61. /// <param name="sender">The source of the event.</param>
  62. /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
  63. private void tabControlPatientSelect_SelectedIndexChanged(object sender, EventArgs e) {
  64. // 탭 선택을 할때마다 선택된 체크박스는 초기화 한다.
  65. tabPageClearCheckBox(tabControlPatientSelect.SelectedIndex);
  66. }
  67. public int getSelectedIndex() {
  68. return tabControlPatientSelect.SelectedIndex;
  69. }
  70. /// <summary>
  71. /// 탭 페이지 내의 체크박스 초기화
  72. /// </summary>
  73. /// <param name="tabIndex">현재 선택된 탭 페이지</param>
  74. private void tabPageClearCheckBox(int tabIndex) {
  75. if(tabIndex == 0) {
  76. if(this.tabControlPatientSelect.TabPages["tabPageSearchPatient"].Controls.Count > 0) {
  77. PatientSelectTabSearchPatient searchPatient = this.tabControlPatientSelect.TabPages["tabPageSearchPatient"].Controls[0] as PatientSelectTabSearchPatient;
  78. //searchPatient.ClearCheckBox();
  79. }
  80. }
  81. else if(tabIndex == 1) {
  82. if(this.tabControlPatientSelect.TabPages["tabPageEmergencyPatient"].Controls.Count > 0) {
  83. PatientSelectTabEmergencyPatient searchPatient = this.tabControlPatientSelect.TabPages["tabPageEmergencyPatient"].Controls[0] as PatientSelectTabEmergencyPatient;
  84. searchPatient.ClearCheckBox();
  85. }
  86. }
  87. else if(tabIndex == 2) {
  88. if(this.tabControlPatientSelect.TabPages["tabPageOperatePatient"].Controls.Count > 0) {
  89. PatientSelectTabOperatePatient searchPatient = this.tabControlPatientSelect.TabPages["tabPageOperatePatient"].Controls[0] as PatientSelectTabOperatePatient;
  90. searchPatient.ClearCheckBox();
  91. }
  92. }
  93. else if(tabIndex == 3) {
  94. if(this.tabControlPatientSelect.TabPages["tabPageInPatient"].Controls.Count > 0) {
  95. PatientSelectTabInPatient searchPatient = this.tabControlPatientSelect.TabPages["tabPageInPatient"].Controls[0] as PatientSelectTabInPatient;
  96. searchPatient.ClearCheckBox();
  97. }
  98. }
  99. else if(tabIndex == 4) {
  100. if(this.tabControlPatientSelect.TabPages["tabPageOutPatient"].Controls.Count > 0) {
  101. PatientSelectTabOutPatient searchPatient = this.tabControlPatientSelect.TabPages["tabPageOutPatient"].Controls[0] as PatientSelectTabOutPatient;
  102. searchPatient.ClearCheckBox();
  103. }
  104. }
  105. }
  106. /// <summary>
  107. /// 클래스 외부에서 tabPageClearCheckBox 를 호출하기 위한 메서드
  108. /// </summary>
  109. public override void SetClearCheckBox() {
  110. // 선택된 탭의 그리드 체크박스를 해제한다.
  111. tabPageClearCheckBox(tabControlPatientSelect.SelectedIndex);
  112. }
  113. /// <summary>
  114. /// 탭의 그리드에서 더블클릭하여 선택한 환자정보로 동의서 관리를 한다.
  115. /// </summary>
  116. /// <param name="vo">The vo.</param>
  117. public override void SetChangePID(PatListVO vo) {
  118. if(vo != null) {
  119. // TODO..
  120. // 동의서가 view일 경우
  121. if(consentMain.viewStatus && !consentMain.IsComplete()) {
  122. // dbs227, 임시저장 팝업 사용 안함
  123. //DialogResult result = MessageBox.Show(string.Format(Properties.Resources.msg_confirm_tempsave)
  124. // , string.Format(Properties.Resources.msg_caption_confirm),
  125. // MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);
  126. //if (result == DialogResult.Yes) {
  127. // consentMain.TempSave();
  128. //} else if (result == DialogResult.Cancel) {
  129. // return;
  130. //}
  131. }
  132. var curIdx = tabControlPatientSelect.SelectedIndex;
  133. if(curIdx == 2) {
  134. consentMain.setOpPatientSelected(true);
  135. }
  136. else {
  137. consentMain.setOpPatientSelected(false);
  138. }
  139. consentMain.ClearPreviewConsent(false);
  140. consentMain.ConsentExecuteInfo["patientNo"] = vo.pid;
  141. consentMain.ConsentExecuteInfo["clnDate"] = vo.inDd.Replace("/", "").Replace("-", "");
  142. consentMain.ConsentExecuteInfo["clnDept"] = vo.ordDeptCd;
  143. consentMain.ConsentExecuteInfo["visitType"] = vo.ordType;
  144. consentMain.ConsentExecuteInfo["cretno"] = vo.cretNo.ToString();
  145. consentMain.ConsentExecuteInfo["userNo"] = consentMain.ConsentExecuteInfo["loginUserNo"];
  146. consentMain.ConsentExecuteInfo["userName"] = consentMain.ConsentExecuteInfo["loginUserName"];
  147. consentMain.ConsentExecuteInfo["opRsrvNo"] = vo.oprsRvNo;
  148. consentMain.changeInDd(consentMain.ConsentExecuteInfo["clnDate"]);
  149. // 환자 선택 시 동의서 이력 재조회 루틴 추가
  150. Cursor currentCursor = this.Cursor;
  151. this.Cursor = Cursors.WaitCursor;
  152. consentMain.UIControlsRefeash(vo.ordType);
  153. this.Cursor = currentCursor;
  154. }
  155. }
  156. /// <summary>
  157. /// 탭의 그리드에서 체크된 환자리스트를 갖고 온다.
  158. /// </summary>
  159. /// <returns></returns>
  160. public override List<PatListVO> GetSelectedPatientList() {
  161. List<PatListVO> patList = null;
  162. if(tabControlPatientSelect.SelectedIndex == 0) {
  163. if(this.tabControlPatientSelect.TabPages["tabPageSearchPatient"].Controls.Count > 0) {
  164. PatientSelectTabSearchPatient searchPatient = this.tabControlPatientSelect.TabPages["tabPageSearchPatient"].Controls[0] as PatientSelectTabSearchPatient;
  165. patList = searchPatient.GetCheckPatList();
  166. }
  167. }
  168. else if(tabControlPatientSelect.SelectedIndex == 1) {
  169. if(this.tabControlPatientSelect.TabPages["tabPageEmergencyPatient"].Controls.Count > 0) {
  170. PatientSelectTabEmergencyPatient searchPatient = this.tabControlPatientSelect.TabPages["tabPageEmergencyPatient"].Controls[0] as PatientSelectTabEmergencyPatient;
  171. patList = searchPatient.GetCheckPatList();
  172. }
  173. }
  174. else if(tabControlPatientSelect.SelectedIndex == 2) {
  175. if(this.tabControlPatientSelect.TabPages["tabPageOperatePatient"].Controls.Count > 0) {
  176. PatientSelectTabOperatePatient searchPatient = this.tabControlPatientSelect.TabPages["tabPageOperatePatient"].Controls[0] as PatientSelectTabOperatePatient;
  177. patList = searchPatient.GetCheckPatList();
  178. }
  179. }
  180. else if(tabControlPatientSelect.SelectedIndex == 3) {
  181. if(this.tabControlPatientSelect.TabPages["tabPageInPatient"].Controls.Count > 0) {
  182. PatientSelectTabInPatient searchPatient = this.tabControlPatientSelect.TabPages["tabPageInPatient"].Controls[0] as PatientSelectTabInPatient;
  183. patList = searchPatient.GetCheckPatList();
  184. }
  185. }
  186. else if(tabControlPatientSelect.SelectedIndex == 4) {
  187. if(this.tabControlPatientSelect.TabPages["tabPageOutPatient"].Controls.Count > 0) {
  188. PatientSelectTabOutPatient searchPatient = this.tabControlPatientSelect.TabPages["tabPageOutPatient"].Controls[0] as PatientSelectTabOutPatient;
  189. patList = searchPatient.GetCheckPatList();
  190. }
  191. }
  192. return patList;
  193. }
  194. /// <summary>
  195. /// 외래 탭으로 이동
  196. /// </summary>
  197. /// <param name="consentMain">The consent main.</param>
  198. public override void pageMove_tabPageOutPatient(IConsentMain consentMain) {
  199. if(consentMain.ConsentExecuteInfo["userIOFlag"].Equals("I")) {
  200. this.tabControlPatientSelect.SelectedTab = this.tabControlPatientSelect.TabPages["tabPageInPatient"];
  201. }
  202. else {
  203. this.tabControlPatientSelect.SelectedTab = this.tabControlPatientSelect.TabPages["tabPageOutPatient"];
  204. }
  205. }
  206. }
  207. }