#region Copyright ⓒ 2015 CLIPSOFT Co.,Ltd. All Rights Reserved. // // All rights are reserved. Reproduction or transmission in whole or in part, // in any form or by any means, electronic, mechanical or otherwise, is // prohibited without the prior written consent of the copyright owner. // // Filename:ConsentCommandCtrl.cs // #endregion using System; using System.ComponentModel; using System.Collections.Generic; using System.Windows.Forms; using System.IO; using System.Net; using System.Xml; using System.Drawing; using System.Security.Cryptography; using CLIP.eForm.Consent.UI.ConsentSvcRef; using CLIP.eForm.Consent.UI.HospitalSvcRef; using ClipSoft.eForm.Base.Dialog; using static CLIP.eForm.Consent.UI.Common; using ConsentFormListVO = CLIP.eForm.Consent.UI.ConsentSvcRef.ConsentVO; using SingleReturnData = CLIP.eForm.Consent.UI.ConsentSvcRef.SingleReturnData; namespace CLIP.eForm.Consent.UI { /// /// 출력, 전자동의서 실행 버튼 클래스 /// /// ///

[설계자]

///

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

///

[원본 작성자]

///

클립소프트 기술부 이창훈 (chlee@clipsoft.co.kr)

///

[수정 작성자]

///

클립소프트 기술부 이인희

///

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

///

[HISTORY]

///

2016-06-21 : 최초작성

///

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

///
public partial class ConsentCommandCtrl : ConsentCommandCtrlBase { private PreviewConsent currentPreviewConsent = null; private TargetPatient currentTargetPatient = null; private EndUser currentEndUser = null; private IConsentMain consentMain = null; private ConsentSvcRef.ConsentSvcSoapClient consentWebService = null; private HospitalSvcRef.HospitalSvcSoapClient hospitalWebService = null; private string exportedImageFiles = string.Empty; private string exportedImageFilesJson = string.Empty; System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConsentCommandCtrl)); private bool m_IsComplete = false; public bool IsComplete => m_IsComplete; public ConsentCommandCtrl() { InitializeComponent(); } public override bool EnableRedo { get { return base.EnableRedo; } set { base.EnableRedo = value; this.toolStripButtonRedo.Enabled = base.EnableRedo; } } public override bool reprintStatus { get { return base.reprintStatus; } set { base.reprintStatus = value; } } public override bool EnableUndo { get { return base.EnableUndo; } set { base.EnableUndo = value; this.toolStripButtonUndo.Enabled = base.EnableUndo; } } public override bool EnableRemoveAll { get { return base.EnableRemoveAll; } set { base.EnableRemoveAll = value; this.toolStripButtonDelAllDraw.Enabled = base.EnableRemoveAll; } } public override bool EnablePenDrawing { get { return base.EnableRemoveAll; } set { base.EnablePenDrawing = value; this.toolStripButtonPen.Enabled = base.EnablePenDrawing; } } public override bool EnablePenConfig { get { return base.EnablePenConfig; } set { base.EnablePenConfig = value; this.toolStripButtonPenConfig.Enabled = base.EnablePenConfig; } } public PreviewConsent CurrentPreviewConsent { get { return currentPreviewConsent; } set { currentPreviewConsent = value; } } public TargetPatient CurrentTargetPatient { get { return currentTargetPatient; } set { currentTargetPatient = value; } } public EndUser CurrentEndUser { get { return currentEndUser; } set { currentEndUser = value; } } /// /// 임시저장 버튼 클릭 활성화 여부 반환 /// /// public override bool getTempSaveButton() { return this.toolStripButtonTempSaveToServer.Enabled; } /// /// 저장 버튼 클릭 활성화 여부 반환 /// /// public override bool getSaveButton() { return this.toolStripButtonSaveToServer.Enabled; } public override void setTempSaveButton(bool enabled) { this.toolStripButtonTempSaveToServer.Enabled = enabled; } public override void setSaveButton(bool enabled) { this.toolStripButtonSaveToServer.Enabled = enabled; } public void setZoomRate(int rate) { toolStripComboBoxZoom.SelectedIndex = rate; toolStripComboBoxZoom.Enabled = true; // zoom rate toolStripButtonPrevPage.Enabled = true; // 이전 페이지 toolStripButtonNextPage.Enabled = true; // 다음 페이지 toolStripTextBoxPageIndex.Enabled = true; // 페이지 인덱스 toolStripLabelTotalPages.Enabled = true; toolStripButtonFirstPage.Enabled = true; // 처음 페이지 toolStripButtonLastPage.Enabled = true; // 마지막페이지 toolStripTextBoxPageIndex.Text = consentMain.GetCurrentPageIndex().ToString(); toolStripLabelTotalPages.Text = consentMain.GetTotalPageCount().ToString(); } public override void setCompleteSaveButton(bool enabled) { this.toolStripButtonCompleteSaveToServer.Enabled = enabled; } protected override void OnLoad(EventArgs e) { base.OnLoad(e); if(this.DesignMode || LicenseManager.UsageMode == LicenseUsageMode.Designtime) { return; } if(!ConsentMainControl.HasVerticalMonitor) { this.toolStripButtonExecute.Visible = false; } else { this.toolStripButtonExecute.Visible = true; } this.consentMain = ConsentMainControl.GetConsentMainInterface(this); this.consentWebService = WebMethodCommon.GetConsentWebService(consentMain.PluginExecuteInfo["consentSvcUrl"]); this.hospitalWebService = WebMethodCommon.GetHospitalWebService(consentMain.PluginExecuteInfo["hospitalSvcUrl"]); InitZoomRateDropdownItems(); this.consentMain.OnLoadPartControls += ConsentMain_OnLoadPartControls; this.toolStripButtons.MouseEnter += ToolStripButtons_MouseEnter; } private void ConsentMain_OnLoadPartControls(object sender, EventArgs e) { this.consentMain.OnVisibleEFormControl += ConsentMain_OnVisibleEFormControl; this.consentMain.OnInvisibleEFormControl += ConsentMain_OnInvisibleEFormControl; } private void ConsentMain_OnInvisibleEFormControl(object sender, EventArgs e) { this.consentMain.ConsentCommandCtrl.Enabled = false; } private void ConsentMain_OnVisibleEFormControl(object sender, EventArgs e) { this.consentMain.ConsentCommandCtrl.Enabled = true; } private void InitZoomRateDropdownItems() { // 콤보 박스에 저장되는 형식을 ArrayList 로 바꿈 List zoomRateList = new List(); zoomRateList.Add(new ZoomRateDropdownItem("50%", "50")); zoomRateList.Add(new ZoomRateDropdownItem("75%", "75")); zoomRateList.Add(new ZoomRateDropdownItem("100%", "100")); zoomRateList.Add(new ZoomRateDropdownItem("200%", "200")); zoomRateList.Add(new ZoomRateDropdownItem("창 너비에 맞춤", "pagewidth")); zoomRateList.Add(new ZoomRateDropdownItem("창 크기에 맞춤", "wholepage")); toolStripComboBoxZoom.Items.AddRange(zoomRateList.ToArray()); } #region toolStripButton 이벤트 private void ToolStripButtons_MouseEnter(object sender, EventArgs e) { this.toolStripButtons.Focus(); } /// /// 처음 페이지로 이동 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonFirstPage_Click(object sender, EventArgs e) { this.consentMain.MoveFirstPage(); } /// /// 이전 페이지로 이동 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonPrevPage_Click(object sender, EventArgs e) { this.consentMain.MovePrevPage(); } /// /// 다음 페이지 이동 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonNextPage_Click(object sender, EventArgs e) { this.consentMain.MoveNextPage(); } /// /// 마지막 페이지로 이동 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonLastPage_Click(object sender, EventArgs e) { this.consentMain.MoveLastPage(); } /// /// toolStripTextBoxPageIndex 텍스트 변경 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripTextBoxPageIndex_TextChanged(object sender, EventArgs e) { if(!string.IsNullOrEmpty(this.toolStripTextBoxPageIndex.Text)) { bool currentIndexParseResult; int currentIndex = 0; currentIndexParseResult = int.TryParse(this.toolStripTextBoxPageIndex.Text, out currentIndex); bool totalIndexParseResult; int totalIndex = 0; totalIndexParseResult = int.TryParse(this.toolStripTextBoxPageIndex.Text, out totalIndex); if(currentIndexParseResult == false || totalIndexParseResult == false) { return; } if(currentIndex > totalIndex) { } // 입력한 페이지수가 전체 페이지 이하일 경우 해당 페이지로 이동 else { this.consentMain.MoveToPageIndex(currentIndex); } } } /// /// 동의서 확대비율 지정 콤보 박스 변경 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripComboBoxZoom_SelectedIndexChanged(object sender, EventArgs e) { ZoomRateDropdownItem zoomRateItem = this.toolStripComboBoxZoom.SelectedItem as ZoomRateDropdownItem; if(zoomRateItem == null) { } else { this.consentMain.SetZoomRate(zoomRateItem.ItemValue); } } private void setCurrentPreviewConsent(ConsentFormListVO vo, int orderNo, string inputId, string inputNm) { // 현재 preview 할동의서 정보 설정 CurrentPreviewConsent = new PreviewConsent { formId = vo.formId.ToString(), formCd = vo.formCd.ToString(), formName = vo.formName, formPrintName = vo.formPrintName, prntCnt = vo.prntCnt, consentMstRid = "-1", consentState = string.Empty, orderNo = orderNo, inputId = inputId, inputNm = inputNm, ReissueConsentMstRid = 0, RewriteConsentMstRid = 0, ordType = CurrentTargetPatient.VisitType, ocrtagPrntyn = vo.ocrTagYN, userDrFlag = vo.userDrFlag, printOnly = vo.prntOnly, opDiagName = vo.opDiagName, drOnly = vo.DrOnly, opName = vo.opName }; Dictionary globalParams = Common.CreateGlobalParamsDictionary(consentMain.ConsentExecuteInfo["dutinstcd"]); List formGuids = new List {}; SetPatientAndUser(globalParams); globalParams[FOSParameter.OCRCode] = string.Empty; var ocrBuf = GetOcrCode(); if(string.IsNullOrEmpty(ocrBuf)) { MessageBox.Show("OCR 중복입니다. 다시 환자를 선택하여 주세요."); return; } int cnt = hospitalWebService.checkOcrDup(consentMain.ConsentExecuteInfo["dutinstcd"], ocrBuf); if(cnt > 0) { MessageBox.Show("OCRTAG 중복 발생입니다. 환자를 다시 선택하여 주십시요."); consentMain.ClearPreviewConsent(true); return; } globalParams[FOSParameter.OCRCode] = CurrentPreviewConsent.ocrCode = ocrBuf; globalParams[FOSParameter.Device] = "P"; globalParams[FOSParameter.PrintTime] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); globalParams[FOSParameter.SignTime] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); globalParams[FOSParameter.PrintIp] = consentMain.ConsentExecuteInfo["printIP"]; if(string.IsNullOrEmpty(CurrentPreviewConsent.ocrCode)) { MessageBox.Show("OCRTAG 생성 오류. 전산실에 문의 하세요."); consentMain.ClearPreviewConsent(true); return; } string fos = Common.GetFosString(formGuids , consentMain.PluginExecuteInfo["formServiceUrl"] , globalParams , null , consentMain.ConsentExecuteInfo["dutinstcd"]); SetEnableButtonsByCurrentConsent(); consentMain.PreviewConsent(fos); } /// /// 출력 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonPrint_Click(object sender, EventArgs e) { // dbs227, 현재 동의서 상태가 null 이라면 skip if(CurrentPreviewConsent == null) { SetEnableButtonsByCurrentConsent(); return; } int cnt = hospitalWebService.checkOcrDup(consentMain.ConsentExecuteInfo["dutinstcd"], CurrentPreviewConsent.ocrCode); if(cnt > 0) { MessageBox.Show("OCRTAG 중복 발생입니다. 환자를 다시 선택하여 주십시요."); consentMain.ClearPreviewConsent(true); return; } // 경북대학교병원 요청사항 출력 제어 string printControlMsg = string.Empty; string printOnly = string.Empty; printOnly = hospitalWebService.getPrintOnly(consentMain.ConsentExecuteInfo["dutinstcd"], CurrentPreviewConsent.formCd); printControlMsg = hospitalWebService.getPrintControlMsg(consentMain.ConsentExecuteInfo["dutinstcd"], CurrentTargetPatient.VisitType.ToUpper()); // 6961 [전자동의서]출력시 특정 진찰료 면제사유시 제어 switch var runCount = hospitalWebService.checkHardcd(consentMain.ConsentExecuteInfo["dutinstcd"], "6961", "Y"); var runCount2 = hospitalWebService.checkHardcd(consentMain.ConsentExecuteInfo["dutinstcd"], "6952", CurrentPreviewConsent.formCd); // 출력 전용 서식이 아닐 경우 출력 제한을 한다. if(!string.IsNullOrEmpty(printOnly) && printOnly.Equals("N")) { if(!string.IsNullOrEmpty(printControlMsg) && runCount2 < 1) { MessageBox.Show(printControlMsg); return; } } var count = hospitalWebService.checkPrintablePatient(consentMain.ConsentExecuteInfo["dutinstcd"], consentMain.ConsentExecuteInfo["patientNo"], consentMain.ConsentExecuteInfo["clnDate"], consentMain.ConsentExecuteInfo["cretno"]); // 6961 [전자동의서]출력시 특정 진찰료 면제사유시 제어 switch //var runCount = hospitalWebService.checkHardcd(consentMain.ConsentExecuteInfo["dutinstcd"], "6961", "Y"); //var runCount2 = hospitalWebService.checkHardcd(consentMain.ConsentExecuteInfo["dutinstcd"], "6952", CurrentPreviewConsent.FormCd); // 해당 기준자료가 설정 되었다면 아래기능 호출 if(runCount > 0) { if(count > 0) { MessageBox.Show("출력할 수 없는 수진이력입니다.\n(문의: 의무기록팀)", "확인", MessageBoxButtons.OK); return; } } if(CurrentPreviewConsent.consentState.ToUpper().Equals("UNFINISHED") || CurrentPreviewConsent.consentState.ToUpper().Equals("TEMP")) { MessageBox.Show(string.Format(Properties.Resources.msg_cannot_print_temp_doc) , string.Format(Properties.Resources.title_info), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } this.consentMain.setPrintButton(true); // 진정동의서 출력 서식 확인 int result = this.consentWebService.checkJinJeongDocument(consentMain.ConsentExecuteInfo["dutinstcd"], currentPreviewConsent.formCd); if(result > 0) { // 진정동의서를 출력 해야 한다. this.CurrentPreviewConsent.linkFormCd = "1100010977"; } // 연계 서식이 없다면 기존 출력 루틴으로 출력 if(/*this.CurrentPreviewConsent.linkFormCd == null || */string.IsNullOrEmpty(this.CurrentPreviewConsent.linkFormCd)) { PrintConsent(); if (consentMain.multiParams == null) { consentMain.ClearPreviewConsent(true); } else { consentMain.showNextPreview(); } } // 연계 서식이 있다면 else { // 기관별 마취 동의서 서식 코드를 조회 한다 String anstFormCd = this.consentWebService.getLinkedAnstDocument(consentMain.ConsentExecuteInfo["dutinstcd"]); if(anstFormCd == null && this.currentPreviewConsent.linkFormCd.Equals("1100010977")) { // 마취동의서 코드를 찾지 못하면 메시지 박스를 보여준다 MessageBox.Show("기준자료 오류, 전산실에 문의하세요", "경고", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // 마취 동의서 라면 if(this.CurrentPreviewConsent.linkFormCd.Equals(anstFormCd)) { // 출력 후 연계서식 정보 초기화되기 때문에 미리 값을 저장 해 둔다 var linkFormCd = this.CurrentPreviewConsent.linkFormCd; var orderNo = this.CurrentPreviewConsent.orderNo; var inputNm = this.CurrentPreviewConsent.inputNm; var inputId = this.CurrentPreviewConsent.inputId; MessageBox.Show(string.Format(Properties.Resources.msg_info_anes_docu_print) , string.Format(Properties.Resources.title_info), MessageBoxButtons.OK, MessageBoxIcon.Information); // 선택된 동의서 출력 PrintConsent(); // 연계 동의서 출력 //ConsentFormListVO[] voArr = this.consentWebService.GetConsentByFormcd(linkFormCd, consentMain.ConsentExecuteInfo["dutinstcd"]); ConsentFormListVO vo = this.consentWebService.GetConsentByFormcd(linkFormCd, consentMain.ConsentExecuteInfo["dutinstcd"]); // 조회된 서식이 없다면 출력 하지 않음 if(vo == null) { return; } //setCurrentPreviewConsent(voArr[0], orderNo, inputId, inputNm); setCurrentPreviewConsent(vo, orderNo, inputId, inputNm); consentMain.setPrintButton(true); // 프린트 한다 PrintConsent(); } // 진정동의서 출력 해야 되는 경우라면 else if(this.currentPreviewConsent.linkFormCd.Equals("1100010977")) { DialogResult clickResult = MessageBox.Show(string.Format(Properties.Resources.msg_jinjeong) , string.Format(Properties.Resources.title_jinjeong), MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information); switch(clickResult) { case DialogResult.Yes: { // 출력 후 연계서식 정보 초기화되기 때문에 미리 값을 저장 해 둔다 var linkFormCd = this.CurrentPreviewConsent.linkFormCd; var orderNo = this.CurrentPreviewConsent.orderNo; var inputNm = this.CurrentPreviewConsent.inputNm; var inputId = this.CurrentPreviewConsent.inputId; // 선택된 동의서 출력 PrintConsent(); // 연계 동의서 출력 //ConsentBySearchVO[] voArr = this.consentWebService.GetConsentByFormcd(linkFormCd, consentMain.ConsentExecuteInfo["dutinstcd"]); ConsentFormListVO vo = this.consentWebService.GetConsentByFormcd(linkFormCd, consentMain.ConsentExecuteInfo["dutinstcd"]); // 조회된 서식이 없다면 출력 하지 않음 if(vo == null) { return; } setCurrentPreviewConsent(vo, orderNo, inputId, inputNm); consentMain.setPrintButton(true); // 프린트 한다 PrintConsent(); } break; case DialogResult.No: { // 선택된 동의서만 프린트 PrintConsent(); } break; case DialogResult.Cancel: // do nothing break; } } if (consentMain.multiParams == null) { // 출력을 다 하였으면 화면을 닫는다. consentMain.ClearPreviewConsent(true); } else { consentMain.showNextPreview(); } } } /// /// 동의서 닫기 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonCloseDualViewer_Click(object sender, EventArgs e) { this.consentMain.CloseDualViewer(); } /// /// 임시저장 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonTempSaveToServer_Click(object sender, EventArgs e) { // 동의서 임시 저장 this.consentMain.TempSave(); } /// /// 서명 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonSaveToServer_Click(object sender, EventArgs e) { // dbs227, 현재 동의서 상태가 null 이라면 skip if(CurrentPreviewConsent == null) { SetEnableButtonsByCurrentConsent(); return; } // 로그인 사용자와 동의서 작성자가 다르면 인증 저장 제한 if(!CurrentEndUser.JobKindCd.Substring(0, 2).Equals("03") && !CurrentPreviewConsent.inputId.Equals(consentMain.ConsentExecuteInfo["loginUserNo"])) { MessageBox.Show("작성자만 인증 저장이 가능합니다.", "인증 저장 불가", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if(!CurrentEndUser.JobKindCd.Substring(0, 2).Equals("03") && CurrentPreviewConsent.drOnly.ToUpper().Equals("Y")) { MessageBox.Show("의사만 인증저장 가능한 동의서 입니다.\n문의:보건의료정보관리(의무기록)팀", "인증 저장 불가", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } this.consentMain.saveClickPoint = true; this.consentMain.Save(); this.consentMain.saveClickPoint = false; //저장 후 로그인 사용자를 현재endUser로 세팅 consentMain.SetConsentUserInfo(consentMain.ConsentExecuteInfo["dutinstcd"] , consentMain.ConsentExecuteInfo["loginUserNo"] , consentMain.ConsentExecuteInfo["userDeptCd"]); } /// /// 확인 저장 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonCompleteSaveToServer_Click(object sender, EventArgs e) { if (this.consentWebService.getCertUseYn(this.currentPreviewConsent.formCd, consentMain.ConsentExecuteInfo["dutinstcd"]) == "Y") { MessageBox.Show("인증서가 필요없는 서식은 [확인저장] 할 수 없습니다.\r[인증저장] 으로 진행하시기 바랍니다."); return; } m_IsComplete = true; this.consentMain.Save(); m_IsComplete = false; } /// /// 전자동의서 실행 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonExecute_Click(object sender, EventArgs e) { RunConsentDualView(); } /// /// 펜 그리기 모드 활성화/비활성화 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonPen_Click(object sender, EventArgs e) { bool isDrawMode = this.consentMain.IsDrawMode(); this.consentMain.EnableDrawing(!isDrawMode); this.toolStripButtonPen.Checked = !isDrawMode; } /// /// 그리기 펜 설정 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonPenConfig_Click(object sender, EventArgs e) { // 펜 색상 및 두께 변경 this.consentMain.ConfigDrawingPen(); } /// /// 펜 그리기 데이터 모두 삭제 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonDelAllDraw_Click(object sender, EventArgs e) { this.consentMain.RemoveAllDrawing(); } /// /// 펜 그리기 undo 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonUndo_Click(object sender, EventArgs e) { this.consentMain.UndoDrawing(); } /// /// 펜 그리기 redo 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonRedo_Click(object sender, EventArgs e) { this.consentMain.RedoDrawing(); } #endregion /// /// 페지 변경시 이벤트 /// 외부에서 호출하는 메서드 /// /// Index of the current page. public override void OnPaging(int currentPageIndex) { this.toolStripTextBoxPageIndex.Text = currentPageIndex.ToString(); } /// /// 동의서 종이 출력 /// /// public override void OnPrint(string value) { Cursor currentCursor = this.Cursor; try { this.Cursor = Cursors.WaitCursor; SaveDataForPrintedConsent(string.Empty); // dbs227, 경대병원 프린트 연동 로그 추후 기록 // 기존 저장 루틴 위치 변경 //SaveDataForPrintedConsent(string.Empty); // 출력 카운트만큼 출력 된 후 처리 /* if (this.consentMain.printSaveStatus) { if (consentMain.ConsentExecuteInfo["printAct"].Equals("N")) { //MessageBox.Show(string.Format(Properties.Resources.msg_temp_print_confirm) // , string.Format(Properties.Resources.msg_caption_confirm), MessageBoxButtons.OK, MessageBoxIcon.Information); //출력후에는 전체목록 탭이 선택되게 한다. this.consentMain.ConsentListCtrl.InquiryConsentData(-2); } else { //agent 구동시 바로 출력을 하는 경우 미작성 탭이 선택되게 한다. this.consentMain.ConsentListCtrl.InquiryConsentData(9); } //Agent에서 출력요청한 내용이 모두 끝나면 창을 닫는다. if (consentMain.ConsentExecuteInfo["printAct"].Equals("Y")) { this.consentMain.agentCallPrintCnt--; if (this.consentMain.agentCallPrintCnt == 0) { this.consentMain.Parent_Disposed(); } } } */ } catch(Exception ex) { throw ex; } finally { this.Cursor = currentCursor; // dbs227 저장이 끝나면 preview 객체를 초기화 하여 준다 CurrentPreviewConsent = null; } base.OnPrint(value); } /// /// 동의서 동의서 미리보기 상태 활성화 처리 /// /// public override void SetEnableConsentIssueCommands(bool isIssuable) { this.toolStripButtonPrint.Enabled = isIssuable;//프린트 this.toolStripButtonExecute.Enabled = isIssuable;//아큐실행버튼 this.toolStripButtonFirstPage.Enabled = isIssuable;// this.toolStripButtonPrevPage.Enabled = isIssuable; this.toolStripButtonNextPage.Enabled = isIssuable; this.toolStripButtonLastPage.Enabled = isIssuable; this.toolStripTextBoxPageIndex.Enabled = isIssuable;//페이지번호 보여주는부분 total page this.toolStripLabelTotalPages.Enabled = isIssuable;// this.toolStripTextBoxPageIndex.Text = consentMain.GetCurrentPageIndex().ToString(); this.toolStripLabelTotalPages.Text = consentMain.GetTotalPageCount().ToString(); this.toolStripComboBoxZoom.Enabled = isIssuable;//넓이 맞춤 서식 폭 조정 this.toolStripButtonDeleteAllSignData.Enabled = isIssuable;//그림그린거 다없앤거 this.toolStripButtonInsertAttach.Enabled = isIssuable;//첨지 this.toolStripButtonDeleteAttach.Enabled = isIssuable;//첨지삭제 //this.toolStripButtonSaveToServer.Enabled = isIssuable; // 인증 저장 //this.toolStripButtonTempSaveToServer.Enabled = isIssuable; // 임시 저장 //this.toolStripButtonCompleteSaveToServer.Enabled = isIssuable; // 완료 저장 } /// /// 동의서 상태에 따라 버튼들 활성화를 조절한다 /// public override void SetEnableButtonsByCurrentConsent() { string state = string.Empty; if(this.CurrentPreviewConsent != null) { state = this.CurrentPreviewConsent.consentState; } if(this.CurrentTargetPatient != null && !string.IsNullOrEmpty(this.CurrentTargetPatient.PatientCode) && CurrentPreviewConsent != null) { if(!ConsentMainControl.HasVerticalMonitor) { this.toolStripButtonTempSaveToServer.Enabled = true; this.toolStripButtonSaveToServer.Enabled = true; //this.toolStripButtonCompleteSaveToServer.Enabled = true; this.toolStripButtonPrint.Enabled = true; SetEnableButtonsByConsentStateForSingleView(state); this.EnablePenDrawing = true; this.EnablePenConfig = true; } else { //this.toolStripButtonCompleteSaveToServer.Enabled = true; this.toolStripButtonSaveToServer.Enabled = true; this.toolStripButtonExecute.Enabled = true; this.toolStripButtonPrint.Enabled = true; SetEnableButtonsByConsentStateForDualView(state); } this.toolStripButtonDelAllDraw.Enabled = true; this.toolStripButtonRedo.Enabled = true; this.toolStripButtonUndo.Enabled = true; } else { this.toolStripButtonPrint.Enabled = false; this.toolStripButtonTempSaveToServer.Enabled = false; //this.toolStripButtonCompleteSaveToServer.Enabled = false; this.toolStripButtonSaveToServer.Enabled = false; this.toolStripButtonDelAllDraw.Enabled = false; this.toolStripButtonRedo.Enabled = false; this.toolStripButtonUndo.Enabled = false; } } /// /// Dual Viewer 활성화 시 버튼 활성화 설정 /// /// 활성화 여부 public override void SetEnablementExecuteWhenDualViewerActive(bool enabled) { // 전자동의서 실행 버튼 this.toolStripButtonExecute.Enabled = enabled; // 출력 버튼 this.toolStripButtonPrint.Enabled = enabled; if(enabled) { if(this.CurrentPreviewConsent != null && this.CurrentPreviewConsent.outputType != null) { if(this.CurrentPreviewConsent.outputType.Equals("ELECTRONIC")) { this.toolStripButtonPrint.Enabled = !enabled; } } } // Dual Viewer 닫기 버튼 this.toolStripButtonCloseDualViewer.Visible = !enabled; SetEnableByUserType(); base.SetEnablementExecuteWhenDualViewerActive(enabled); } /// /// 동의서 상태에 따른 Dual view 상태의 버튼 설정 /// /// The state. private void SetEnableButtonsByConsentStateForDualView(string state) { if(state.Equals("PAPER_OUT")) { this.toolStripButtonExecute.Enabled = false; } else if(state.Equals("ELECTR_CMP") || state.Equals("CERTIFY_CMP")) { this.toolStripButtonExecute.Enabled = false; this.toolStripButtonPrint.Enabled = false; } if(this.CurrentPreviewConsent.RewriteConsentMstRid > 0) { this.toolStripButtonExecute.Enabled = true; } } /// /// 동의서 상태에 따른 Single view 상태의 버튼 설정 /// /// The state. private void SetEnableButtonsByConsentStateForSingleView(string state) { if(state.Equals("PAPER_OUT")) { this.toolStripButtonSaveToServer.Enabled = false; //this.toolStripButtonCompleteSaveToServer.Enabled = false; this.toolStripButtonTempSaveToServer.Enabled = false; this.toolStripButtonExecute.Enabled = false; } else if(state.Equals("ELECTR_CMP") || state.Equals("CERTIFY_CMP")) { this.toolStripButtonTempSaveToServer.Enabled = false; //this.toolStripButtonCompleteSaveToServer.Enabled = false; this.toolStripButtonSaveToServer.Enabled = false; this.toolStripButtonPrint.Enabled = false; } if(this.CurrentPreviewConsent.RewriteConsentMstRid > 0) { this.toolStripButtonTempSaveToServer.Enabled = true; //this.toolStripButtonCompleteSaveToServer.Enabled = true; this.toolStripButtonSaveToServer.Enabled = true; } } /// /// 미작성 동의서 삭제 /// /// public override void DeleteRecordOfDeleteConsent(string reasonForUseN) { SaveDataForDeleteConsent(reasonForUseN); } /// /// 출력된 동의서를 저장 /// /// The reason for use n. //private void SaveDataForPrintedConsent(string reasonForUseN) { public void SaveDataForPrintedConsent(string reasonForUseN) { string consentOutputType = this.CurrentPreviewConsent.outputType; string consentState = this.CurrentPreviewConsent.consentState; //int result = -1; //인쇄(바코드제외)인 경우 CONSENT_MST에 데이터를 입력하지 않는다. if((!string.IsNullOrEmpty(consentOutputType) && consentOutputType.Equals("PAPER_EXCEPT_BARCODE"))) { //return result; return; } // 다중 출력 시 if(consentOutputType != null && consentOutputType.Equals("MULTI")) { Cursor currentCursor = this.Cursor; try { this.Cursor = Cursors.WaitCursor; List volist = consentMain.PatientListCtrl.GetSelectedPatientList(); string[] strOcrCd = null; if(this.CurrentPreviewConsent.multiOcrcode.Length > 0) { strOcrCd = this.CurrentPreviewConsent.multiOcrcode.Split('^'); } string[] strMainDrIdCd = null; if(this.CurrentPreviewConsent.multiMainDrIdCd.Length > 0) { strMainDrIdCd = this.CurrentPreviewConsent.multiMainDrIdCd.Split('^'); } int lastRid = -1; for(int i = 0; i < volist.Count; i++) { PatientVO vo = GetPatientByPatList(volist[i]); //string userId = (vo.inputId == null) ? CurrentEndUser.UserNo : vo.inputId; //string userName = (vo.inputNm == null) ? CurrentEndUser.UserName : vo.inputNm; string userId = this.consentMain.ConsentExecuteInfo["loginUserNo"]; string userName = this.consentMain.ConsentExecuteInfo["loginUserName"]; string deptCd = this.consentMain.ConsentExecuteInfo["userDeptCd"]; string hosType = (vo.instCd == null) ? consentMain.ConsentExecuteInfo["dutinstcd"] : vo.instCd; if (string.IsNullOrEmpty(userName)) { UserVO userVo = hospitalWebService.GetUserInfo(userId, hosType, deptCd); userName = userVo.userName; } string patientCode = vo.pid; string clnDeptCode = vo.ordDeptCd; string vistType = vo.ordType; string clnDate = vo.inDd.Replace("-", ""); int rewriteConsentMstRid = 0; string ward = vo.ward; string roomcd = vo.roomCd; string formRid = CurrentPreviewConsent.formId; string formCd = CurrentPreviewConsent.formCd; string consentMstRid = CurrentPreviewConsent.consentMstRid; int orderNo = vo.orderNo; string orderCode = vo.dxCd; string orderName = vo.dxNm; string ocrCode = (strOcrCd != null && !string.IsNullOrEmpty(strOcrCd[i])) ? strOcrCd[i] : CurrentPreviewConsent.ocrCode; string mainDrId = (strMainDrIdCd != null && !string.IsNullOrEmpty(strMainDrIdCd[i])) ? strMainDrIdCd[i] : currentTargetPatient.MainDrId; int.TryParse(vo.cretNo, out int cretno); ConvertStringToInt(formRid, consentMstRid, out int formRidInt, out int consentMstRidInt); string deviceIdentNo = System.Environment.MachineName; // 동의서 프린트 출력 후 데이터를 저장 consentMstRidInt = consentWebService.SavePrintOut(userId , patientCode , clnDeptCode , formRidInt , formCd , consentMstRidInt , rewriteConsentMstRid , null , null , "PRT" , deviceIdentNo , vistType , hosType , clnDate , ward , roomcd , orderNo , orderName , orderCode , ocrCode , cretno , userName , userName , mainDrId , CurrentEndUser.DeptCode , consentMain.GetTotalPageCount().ToString() , "P" , "P" , CurrentTargetPatient.OpRsrvNo); lastRid = consentMstRidInt; //result = lastRid; } this.consentMain.ConsentListCtrl.InquiryConsentData(lastRid); // dbs227, // 출력 모드가 아닐때는 초기화 하지 않는다. //if (!this.consentMain.ConsentExecuteInfo["printYN"].Equals("Y")) //{ //this.consentMain.ConsentListCtrl.InquiryConsentData(lastRid); //} this.consentMain.multiPrintExecCnt++; } catch(Exception ex) { throw ex; } finally { this.Cursor = currentCursor; } consentMain.PatientListCtrl.SetClearCheckBox(); if (consentMain.multiParams == null) { consentMain.ReInitializeViewer(); } } else { if(this.CurrentTargetPatient != null && !string.IsNullOrEmpty(this.CurrentTargetPatient.PatientCode)) { //string userId = CurrentEndUser.UserNo; //string userName = CurrentEndUser.UserName; string userId = this.consentMain.ConsentExecuteInfo["loginUserNo"]; string userName = this.consentMain.ConsentExecuteInfo["loginUserName"]; string hosType = consentMain.ConsentExecuteInfo["dutinstcd"]; string deptCd = this.consentMain.ConsentExecuteInfo["userDeptCd"]; if (string.IsNullOrEmpty(userName)) { UserVO userVo = hospitalWebService.GetUserInfo(userId, hosType, deptCd); userName = userVo.userName; } string patientCode = CurrentTargetPatient.PatientCode; string clnDeptCode = CurrentTargetPatient.clnDeptCode; string vistType = CurrentTargetPatient.VisitType; string clnDate = CurrentTargetPatient.clnDate.Replace("-", ""); string ward = CurrentTargetPatient.Ward; string roomcd = currentTargetPatient.RoomNo; int orderNo = CurrentTargetPatient.OrderNo; string orderCode = CurrentTargetPatient.OPdeptCode; string orderName = CurrentTargetPatient.OPdeptName; string mainDrId = CurrentTargetPatient.MainDrId; string formRid = CurrentPreviewConsent.formId; string formCd = CurrentPreviewConsent.formCd; string consentMstRid = CurrentPreviewConsent.consentMstRid; string ocrCode = CurrentPreviewConsent.ocrCode; int cretno = 0; int.TryParse(CurrentTargetPatient.cretno, out cretno); ConvertStringToInt(formRid, consentMstRid, out int formRidInt, out int consentMstRidInt); int reissueConsentMstRid = 0; string deviceIdentNo = System.Environment.MachineName; Cursor currentCursor = this.Cursor; try { this.Cursor = Cursors.WaitCursor; // 동의서 프린트 출력 후 데이터를 저장 consentMstRidInt = consentWebService.SavePrintOut(userId , patientCode , clnDeptCode , formRidInt , formCd , consentMstRidInt , reissueConsentMstRid , null , null , "PRT" , deviceIdentNo , vistType , hosType , clnDate , ward , roomcd , orderNo , orderName , orderCode , ocrCode , cretno , userName , userName , mainDrId , currentEndUser.DeptCode , consentMain.GetTotalPageCount().ToString() , "P" , "P" , CurrentTargetPatient.OpRsrvNo); if (consentMain.multiParams == null) { this.consentMain.ConsentListCtrl.InquiryConsentData(consentMstRidInt); } this.consentMain.multiPrintExecCnt++; //result = consentMstRidInt; } catch(Exception ex) { throw ex; } finally { this.Cursor = currentCursor; } } } //return result; } /// /// 출력 히스토리 삭제 /// public void erasePrintHistory() { String consentMstRid = CurrentPreviewConsent.consentMstRid; String ocrCode = CurrentPreviewConsent.ocrCode; String instcd = consentMain.ConsentExecuteInfo["dutinstcd"]; String pid = CurrentTargetPatient.PatientCode; Cursor currentCursor = this.Cursor; try { this.Cursor = Cursors.WaitCursor; consentWebService.updatePrintHistory(pid, ocrCode, instcd); } catch(Exception ex) { throw ex; } finally { this.Cursor = currentCursor; } } /// /// 환자리스트의 한 환자의 상세정보를 조회한다 /// /// 조회할 환자의 PatListVO 인스턴스 /// private PatientVO GetPatientByPatList(PatListVO patvo) { string indd = string.Empty; if(!string.IsNullOrEmpty(patvo.inDd)) indd = patvo.inDd.Replace("/", "").Replace("-", ""); PatientVO[] patientVOList = this.hospitalWebService.GetPatientInfo(patvo.pid , indd , patvo.ordType , patvo.ordDeptCd , patvo.cretNo.ToString() , this.consentMain.ConsentExecuteInfo["dutinstcd"] , this.consentMain.ConsentExecuteInfo["opRsrvNo"]); if(patientVOList == null || patientVOList.Length == 0) { return null; } else { return patientVOList[0]; } } /// /// 삭제 사유와 함께 전자동의서 삭제 /// /// 삭제할 사유 private void SaveDataForDeleteConsent(string reasonForUseN) { string userId = CurrentEndUser.UserNo; string patientCode = CurrentTargetPatient.PatientCode; string clnDeptCd = CurrentTargetPatient.clnDeptCode; string ward = CurrentTargetPatient.Ward; string roomcd = CurrentTargetPatient.RoomNo; string formRid = CurrentPreviewConsent.formId; string consentMstRid = CurrentPreviewConsent.consentMstRid; string consentState = CurrentPreviewConsent.consentState; int rewriteConsentMstRid = CurrentPreviewConsent.RewriteConsentMstRid; ConvertStringToInt(formRid, consentMstRid, out int formRidInt, out int consentMstRidInt); int.TryParse(CurrentTargetPatient.cretno, out int cretno); int reissueConsentMstRidInt = CurrentPreviewConsent.ReissueConsentMstRid; string deviceIdentNo = System.Environment.MachineName; this.consentWebService.SaveDelete(userId, Int32.Parse(consentMstRid), patientCode, clnDeptCd, CurrentPreviewConsent.formCd, CurrentTargetPatient.VisitType, consentMain.ConsentExecuteInfo["dutinstcd"], CurrentTargetPatient.clnDate, reasonForUseN, CurrentPreviewConsent.ocrCode, cretno, currentEndUser.DeptCode, consentMain.GetTotalPageCount().ToString(), "CP", "PC"); //this.consentWebService.SaveDelete(userId // , consentMstRidInt // , patientCode // , clnDeptCd // , ward // , roomcd // , formRidInt // , CurrentPreviewConsent.FormCd // , rewriteConsentMstRid // , reissueConsentMstRidInt // , consentState // , deviceIdentNo // , CurrentTargetPatient.VisitType // , consentMain.ConsentExecuteInfo["dutinstcd"] // , CurrentTargetPatient.clnDate // , reasonForUseN // , CurrentPreviewConsent.Ocrcode // , cretno // , currentEndUser.DeptCode // , consentMain.GetTotalPageCount().ToString() // , "CP" // , "P"); } private void SetHasMedicalHistoryInConsent(string patientCode) { this.CurrentPreviewConsent.hasMedicalHistory = false; } /// /// 동의서 뷰어에 동의서 로드 /// public void RunConsentDualView() { bool runDualView = true; if(this.CurrentEndUser != null && this.CurrentPreviewConsent != null && !string.IsNullOrEmpty(this.CurrentPreviewConsent.printOnly) && this.CurrentPreviewConsent.printOnly.Equals("Y") ) { runDualView = false; } // 출력 상태일 경우 재출력만 가능하도록 버튼 조정 if(this.CurrentEndUser != null && this.CurrentPreviewConsent != null && !string.IsNullOrEmpty(this.CurrentPreviewConsent.consentState) && (this.CurrentPreviewConsent.consentState.ToUpper().Equals("PAPER_OUT"))) { runDualView = false; } if(CurrentPreviewConsent == null) { return; } // 동의서 로드 전 consent_mst_rid에 해당하는 동의서가 상위 상태값이 있는지 체크 SingleReturnData resultData = this.consentWebService.CheckConsentState(int.Parse(this.CurrentPreviewConsent.consentMstRid), this.CurrentPreviewConsent.consentStateEng); int state = Int32.Parse(resultData.responseData); if(state == 1) { return; } // 출력만 가능하거나 출력상태일 경우 듀얼뷰어 실행 못하도록 적용 if(runDualView) this.consentMain.RunConsentDualView(); } /// /// 인증저장 된 동의서를 보여준다 /// /// The consent main. public void ShowCompleteConsent(IConsentMain consentMain) { //SetEnableButtonsByCurrentConsent(); consentMain.ReviewConsent(); ConsentImageVO[] cImage = this.consentWebService.GetConsentImage(this.CurrentPreviewConsent.consentMstRid); if(cImage != null && cImage.Length > 0) { CLIP.eForm.ImageView.ImageViewCtrl iViewer = consentMain.GetImageViewerCtrl(); List lStr = new List(); string sPath = this.consentMain.PluginExecuteInfo["imageUploadPath"] + "/DataTempImage/"; string sLocal = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Clipsoft\ClipSoft.eForm.Viewer\DataTemp\"; DirectoryInfo di = new DirectoryInfo(sLocal); if(di.Exists == false) { di.Create(); } foreach(ConsentImageVO img in cImage) { if(File.Exists(sLocal + img.ImageFilename)) { Image imgTemp = Image.FromFile(sLocal + img.ImageFilename); lStr.Add(ImageToBase64(imgTemp, System.Drawing.Imaging.ImageFormat.Jpeg)); imgTemp.Dispose(); } else { string orgFile = img.ImagePath + "\\" + img.ImageFilename; string tempImgNm = orgFile.Substring(orgFile.IndexOf("\\") + 1).Replace("\\", ""); using(WebClient myWebClient = new WebClient()) { myWebClient.DownloadFile(sPath + img.ImageFilename, sLocal + img.ImageFilename); if(File.Exists(sLocal + img.ImageFilename)) { Image imgTemp = Image.FromFile(sLocal + img.ImageFilename); lStr.Add(ImageToBase64(imgTemp, System.Drawing.Imaging.ImageFormat.Jpeg)); imgTemp.Dispose(); } else { break; } } } } if(lStr.Count > 0) iViewer.Show(); iViewer.SetBase64Images(lStr); } else { // 검색된 이미지가 없습니다. } } /// /// 이미지를 BASE64 로 인코딩 /// /// 변환할 이미지 /// 저장할 이미지 포멧 /// public string ImageToBase64(Image image, System.Drawing.Imaging.ImageFormat format) { using(MemoryStream ms = new MemoryStream()) { // Convert Image to byte[] image.Save(ms, format); byte[] imageBytes = ms.ToArray(); // Convert byte[] to Base64 String string base64String = Convert.ToBase64String(imageBytes); return base64String; } } /// /// 동의서 미리 보기 /// /// 미리보기할 동의서가 있는 인스턴스 public void PreviewConsent(IConsentMain consentMain) { // 근무지기관별 공통파라미터를 설정 Dictionary globalParams = Common.CreateGlobalParamsDictionary(consentMain.ConsentExecuteInfo["dutinstcd"]); SetPatientAndUser(globalParams); globalParams[FOSParameter.OCRCode] = string.Empty; var ocrBuf = GetOcrCode(); if(string.IsNullOrEmpty(ocrBuf)) { MessageBox.Show("OCR 중복입니다. 다시 환자를 선택하여 주세요."); return; } globalParams[FOSParameter.OCRCode] = CurrentPreviewConsent.ocrCode = ocrBuf; globalParams[FOSParameter.OCRCode] = CurrentPreviewConsent.ocrCode = GetOcrCode(); // OCR 코드 if(string.IsNullOrEmpty(CurrentPreviewConsent.ocrCode)) { MessageBox.Show("OCRTAG 생성 오류. 전산실에 문의 하세요."); consentMain.ClearPreviewConsent(true); return; } globalParams[FOSParameter.Device] = "C"; globalParams[FOSParameter.PrintTime] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); globalParams[FOSParameter.SignTime] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); globalParams[FOSParameter.PrintIp] = consentMain.ConsentExecuteInfo["printIP"]; List formGuids = new List {}; //string fos = Common.GetFosString(formGuids // , consentMain.PluginExecuteInfo["formServiceUrl"] // , globalParams // , null // , consentMain.ConsentExecuteInfo["dutinstcd"]); string fosNew = Common.getNewFosString(consentMain.PluginExecuteInfo["formServiceUrl"], globalParams, null, new List { CurrentPreviewConsent.formId }); SingleReturnData returnData = this.consentWebService.CheckConsentState(int.Parse(CurrentPreviewConsent.consentMstRid), CurrentPreviewConsent.consentStateEng); int state = Int32.Parse(returnData.responseData); if(state == 1) { MessageBoxDlg.Show(this, "이미 저장된 서식 입니다." , string.Format(Properties.Resources.msg_caption_confirm), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } consentMain.PreviewConsent(fosNew);//서식을 열도록 fos을 던짐 // 외래 환자 외에는 작성 완료(확인) 버튼 안보이게 설정 /* if(CurrentTargetPatient.VisitType.Equals("O") && CurrentPreviewConsent.userDrFlag.Equals("Y")) { toolStripButtonCompleteSaveToServer.Visible = true; } else { toolStripButtonCompleteSaveToServer.Visible = false; } */ consentMain.ConsentCommandCtrl.SetEnableButtonsByCurrentConsent(); SetEnableByUserType(); } /// /// 현재 동의서의 OCR 코드를 가져온다. OCR 코드가 존재하지 않으면 서버로부터 얻어온다 /// /// OCR 코드 public string GetOcrCode() { string strOcrCode = ""; if(this.CurrentPreviewConsent.ocrtagPrntyn.Equals("N")) { strOcrCode = " "; } else { if(this.CurrentPreviewConsent != null && !string.IsNullOrEmpty(this.CurrentPreviewConsent.ocrCode)) { strOcrCode = this.CurrentPreviewConsent.ocrCode; } // OCR 코드가 없으면 서버로 부터 받아온다 // TODO 삭제 else { if(this.CurrentPreviewConsent != null && !string.IsNullOrEmpty(this.CurrentPreviewConsent.ocrtagPrntyn) && this.CurrentPreviewConsent.ocrtagPrntyn.Equals("Y")) { HospitalSvcRef.SingleReturnData returnData = hospitalWebService.GetOcrTag(this.consentMain.ConsentExecuteInfo["dutinstcd"]); if(string.IsNullOrEmpty(returnData.responseData)){ throw new Exception("OCRTAG 생성 오류. 전산실에 문의 하세요."); } strOcrCode = returnData.responseData; } } if(string.IsNullOrEmpty(strOcrCode)) { throw new Exception("OCRTAG 생성 오류. 전산실에 문의 하세요."); } } return strOcrCode; } /// /// changingGlobalParams Dataset 에 FOS 파라미터의 name 과 value 를 설정한다 /// /// public void SetPatientAndUser(Dictionary globalParams) { Dictionary changingGlobalParams = new Dictionary(); if(CurrentPreviewConsent == null) { MessageBox.Show("동의서 정보가 없습니다."); throw new Exception("동의서 정보가 없습니다."); } if(CurrentTargetPatient == null || string.IsNullOrEmpty(this.CurrentTargetPatient.PatientCode)) { MessageBox.Show("환자 정보가 없습니다."); throw new Exception("환자 정보가 없습니다."); } if(CurrentEndUser == null) { MessageBox.Show("사용자 정보가 없습니다."); throw new Exception("사용자 정보가 없습니다."); } // 동의서 정보 changingGlobalParams[FOSParameter.FormName] = this.CurrentPreviewConsent.formPrintName; // 환자 정보 changingGlobalParams[FOSParameter.ImageUploadPath] = this.consentMain.PluginExecuteInfo["imageUploadPath"] + "/"; changingGlobalParams[FOSParameter.PatientCode] = this.CurrentTargetPatient.PatientCode; changingGlobalParams[FOSParameter.PatientSexAge] = this.CurrentTargetPatient.PatientSexAge; changingGlobalParams[FOSParameter.PatientName] = this.CurrentTargetPatient.PatientName; changingGlobalParams[FOSParameter.PatientNameFix] = this.CurrentTargetPatient.PatientName; changingGlobalParams[FOSParameter.PatientRRN] = this.CurrentTargetPatient.PatientJuminNo; changingGlobalParams[FOSParameter.PatientRRNOrg] = this.CurrentTargetPatient.PatientJuminNoOrg; changingGlobalParams[FOSParameter.RoomNo] = this.CurrentTargetPatient.Ward + "/" + this.CurrentTargetPatient.RoomNo; changingGlobalParams[FOSParameter.VisitDate] = SetDateFormatting(this.CurrentTargetPatient.clnDate.Replace("-", "")); changingGlobalParams[FOSParameter.DeptName] = this.CurrentTargetPatient.clnDeptName; changingGlobalParams[FOSParameter.MainDoctor] = this.CurrentTargetPatient.MainDrNm; changingGlobalParams[FOSParameter.PatientAddress] = this.CurrentTargetPatient.PatientAddr; changingGlobalParams[FOSParameter.PatientTelNo] = this.CurrentTargetPatient.PatientTelNo; changingGlobalParams[FOSParameter.PatientTelNoFix] = this.CurrentTargetPatient.PatientTelNo; changingGlobalParams[FOSParameter.Insukind] = this.CurrentTargetPatient.Insukind; changingGlobalParams[FOSParameter.DeptCode] = this.CurrentTargetPatient.clnDeptCode; changingGlobalParams[FOSParameter.DiagName] = this.CurrentTargetPatient.OpDiagName; changingGlobalParams[FOSParameter.OpRsrvNo] = this.CurrentTargetPatient.OpRsrvNo; changingGlobalParams[FOSParameter.OperationName] = this.CurrentTargetPatient.OpName; changingGlobalParams[FOSParameter.OpDoctorName] = this.CurrentTargetPatient.PerfDrName; changingGlobalParams[FOSParameter.OpDeptName] = (this.CurrentTargetPatient.PerfDrFlag + "").Equals("전문의") ? this.CurrentTargetPatient.PerfDrDept ?? "" : ""; changingGlobalParams[FOSParameter.OpCommDeptName] = !(this.CurrentTargetPatient.PerfDrFlag + "").Equals("전문의") ? this.CurrentTargetPatient.PerfDrDept ?? "" : ""; changingGlobalParams[FOSParameter.AnstDrName1] = this.CurrentTargetPatient.AnstDrName1; changingGlobalParams[FOSParameter.AnstDeptName1] = (this.CurrentTargetPatient.AnstDrFlag1 + "").Equals("전문의") ? this.CurrentTargetPatient.AnstDeptName1 ?? "" : ""; changingGlobalParams[FOSParameter.AnstCommDeptName1] = !(this.CurrentTargetPatient.AnstDrFlag1 + "").Equals("전문의") ? this.CurrentTargetPatient.AnstDeptName1 ?? "" : ""; changingGlobalParams[FOSParameter.AnstDrName2] = this.CurrentTargetPatient.AnstDrName2; changingGlobalParams[FOSParameter.AnstDeptName2] = (this.CurrentTargetPatient.AnstDrFlag2 + "").Equals("전문의") ? this.CurrentTargetPatient.AnstDeptName2 ?? "" : ""; changingGlobalParams[FOSParameter.AnstCommDeptName3] = !(this.CurrentTargetPatient.AnstDrFlag2 + "").Equals("전문의") ? this.CurrentTargetPatient.AnstDeptName2 ?? "" : ""; changingGlobalParams[FOSParameter.AnstDrName3] = this.CurrentTargetPatient.AnstDrName3; changingGlobalParams[FOSParameter.AnstDeptName3] = (this.CurrentTargetPatient.AnstDrFlag3 + "").Equals("전문의") ? this.CurrentTargetPatient.AnstDeptName3 ?? "" : ""; changingGlobalParams[FOSParameter.AnstCommDeptName3] = !(this.CurrentTargetPatient.AnstDrFlag3 + "").Equals("전문의") ? this.CurrentTargetPatient.AnstDeptName3 ?? "" : ""; if(!string.IsNullOrEmpty(this.CurrentTargetPatient.PatientJuminNo) && this.CurrentTargetPatient.PatientJuminNo.Length > 6) { changingGlobalParams[FOSParameter.PatientBirthDay] = this.CurrentTargetPatient.PatientJuminNo.Substring(0, 6); changingGlobalParams[FOSParameter.PatientBirthDayFix] = this.CurrentTargetPatient.PatientJuminNo.Substring(0, 6); } if(string.IsNullOrEmpty(changingGlobalParams[FOSParameter.DiagName])) { changingGlobalParams[FOSParameter.DiagName] = this.CurrentPreviewConsent.opDiagName; } if(string.IsNullOrEmpty(changingGlobalParams[FOSParameter.DiagName])) { changingGlobalParams[FOSParameter.DiagName] = this.CurrentTargetPatient.clnDxNm; } if(string.IsNullOrEmpty(changingGlobalParams[FOSParameter.DiagName])) { if(!string.IsNullOrEmpty(consentMain.ConsentExecuteInfo["clnDxNm"])) { changingGlobalParams[FOSParameter.DiagName] = consentMain.ConsentExecuteInfo["clnDxNm"]; } } if(string.IsNullOrEmpty(changingGlobalParams[FOSParameter.OperationName])) { changingGlobalParams[FOSParameter.OperationName] = this.CurrentPreviewConsent.opName; } // 설명일 (수술 확정일) var opDate = this.CurrentTargetPatient.OpCnfmDate; var targetDate = new DateTime(); if(opDate != null && opDate.Length > 0) { targetDate = DateTime.ParseExact(opDate, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); changingGlobalParams[FOSParameter.SignDate] = targetDate.ToLongDateString(); } else { //changingGlobalParams[FOSParameter.SignDate] = this.CurrentTargetPatient.OpCnfmDate; } changingGlobalParams[FOSParameter.BP] = this.CurrentTargetPatient.Ex_bp; changingGlobalParams[FOSParameter.DM] = this.CurrentTargetPatient.Ex_dm; changingGlobalParams[FOSParameter.Heart] = this.CurrentTargetPatient.Ex_heart; changingGlobalParams[FOSParameter.Kidney] = this.CurrentTargetPatient.Ex_kidney; changingGlobalParams[FOSParameter.Respiration] = this.CurrentTargetPatient.Ex_respiration; changingGlobalParams[FOSParameter.MedicalHistory] = this.CurrentTargetPatient.Ex_hx; changingGlobalParams[FOSParameter.Allergy] = this.CurrentTargetPatient.Ex_allergy; changingGlobalParams[FOSParameter.Drug] = this.CurrentTargetPatient.Ex_drug; changingGlobalParams[FOSParameter.Smoking] = this.CurrentTargetPatient.Ex_smoking; changingGlobalParams[FOSParameter.Idiosyncrasy] = this.CurrentTargetPatient.Ex_idio; changingGlobalParams[FOSParameter.Nacrotics] = this.CurrentTargetPatient.Ex_nacrotics; changingGlobalParams[FOSParameter.Airway] = this.CurrentTargetPatient.Ex_airway; changingGlobalParams[FOSParameter.Hemorrhage] = this.CurrentTargetPatient.Ex_hemorrhage; changingGlobalParams[FOSParameter.EtcStatus] = this.CurrentTargetPatient.Ex_status_etc; // 외래일 경우 emr.mmbdhrcd.hardcdno = 6920 에 지정된 서식외에는 사용자를 진료의로 변경한다. if(CurrentTargetPatient.VisitType.Equals("O") && CurrentPreviewConsent.userDrFlag.Equals("Y") && !CurrentEndUser.JobKindCd.Substring(0, 2).Equals("03")) { //consentMain.SetConsentUserInfo(consentMain.ConsentExecuteInfo["dutinstcd"] // , CurrentTargetPatient.MainDrId // , currentTargetPatient.clnDeptCode); // 외래 진료의는 근무 부서 이외의 과의 처방을 낼 수 없다. consentMain.SetConsentUserInfo(consentMain.ConsentExecuteInfo["dutinstcd"] , CurrentTargetPatient.MainDrId , currentTargetPatient.clnDeptCode, ""); // 외래 진료의는 근무 부서 이외의 과의 처방을 낼 수 없다. } else if(!CurrentEndUser.UserNo.Equals(consentMain.ConsentExecuteInfo["loginUserNo"])) { // 로그인 사용자와 다른 경우 재조회 consentMain.SetConsentUserInfo(consentMain.ConsentExecuteInfo["dutinstcd"] , consentMain.ConsentExecuteInfo["loginUserNo"] , consentMain.ConsentExecuteInfo["userDeptCd"]); } string jobKindCd = !string.IsNullOrEmpty(currentEndUser.JobKindCd) ? currentEndUser.JobKindCd.Substring(0, 2) : "00"; changingGlobalParams[FOSParameter.UserName] = this.CurrentEndUser.UserName; changingGlobalParams[FOSParameter.UserTelNo] = this.CurrentEndUser.UserTelNo; changingGlobalParams[FOSParameter.ExplDrName] = jobKindCd.Substring(0, 2).Equals("03") ? CurrentEndUser.UserName : string.Empty; changingGlobalParams[FOSParameter.ExplDrTelNo] = jobKindCd.Substring(0, 2).Equals("03") ? CurrentEndUser.UserTelNo : string.Empty; // 사용자의 서명 이미지를 가져온다 UserSignImageVO vo = this.hospitalWebService.GetSignImage(this.CurrentEndUser.UserNo, this.consentMain.ConsentExecuteInfo["dutinstcd"]); if(vo != null && vo.SignImage != null && vo.SignImage.Length > 0) { // 서명 이미지를 BASE64 형식으로 변환한다. changingGlobalParams[FOSParameter.SignImage] = ImageToBase64(byteArrayToImage(vo.SignImage), System.Drawing.Imaging.ImageFormat.Png); // 의사의 경우라면 설명의사에 서명이미지를 설정한다 changingGlobalParams[FOSParameter.ExplDrSign] = jobKindCd.Substring(0, 2).Equals("03") ? changingGlobalParams[FOSParameter.SignImage] : string.Empty; changingGlobalParams[FOSParameter.ExplDrSign_p] = changingGlobalParams[FOSParameter.ExplDrSign]; } changingGlobalParams[FOSParameter.ExplDrName_P] = CurrentEndUser.UserName; changingGlobalParams[FOSParameter.ExplDrTelNo_p] = CurrentEndUser.UserTelNo; // 출력할 경우 설명 의사와 서명 이미지는 공백 처리 if (consentMain.ConsentExecuteInfo["printYN"].Equals("Y")) { changingGlobalParams[FOSParameter.ExplDrName] = string.Empty; changingGlobalParams[FOSParameter.ExplDrTelNo] = string.Empty; changingGlobalParams[FOSParameter.ExplDrSign] = string.Empty; changingGlobalParams[FOSParameter.PatientName] = string.Empty; changingGlobalParams[FOSParameter.PatientBirthDay] = string.Empty; changingGlobalParams[FOSParameter.PatientTelNo] = string.Empty; // 보호자상주확인서 프린터 출력시 제외 항목 //changingGlobalParams[FOSParameter.UserName] = string.Empty; //changingGlobalParams[FOSParameter.SignImage] = string.Empty; } // 원무 파라미터 설정 changingGlobalParams[FOSParameter.SpecDoctorYN] = consentMain.ConsentExecuteInfo["SpecDoctorYN"]; changingGlobalParams[FOSParameter.ContStartDate] = consentMain.ConsentExecuteInfo["ContStartDate"]; changingGlobalParams[FOSParameter.ContEndDate] = consentMain.ConsentExecuteInfo["ContEndDate"]; changingGlobalParams[FOSParameter.RoomCapa] = consentMain.ConsentExecuteInfo["RoomCapa"]; changingGlobalParams[FOSParameter.ContTelNo] = consentMain.ConsentExecuteInfo["ContTelNo"]; changingGlobalParams[FOSParameter.ContStaff1Name] = consentMain.ConsentExecuteInfo["ContStaff1Name"]; changingGlobalParams[FOSParameter.ContStaff2Name] = consentMain.ConsentExecuteInfo["ContStaff2Name"]; changingGlobalParams[FOSParameter.ContStaff3Name] = consentMain.ConsentExecuteInfo["ContStaff3Name"]; changingGlobalParams[FOSParameter.CardNo] = consentMain.ConsentExecuteInfo["CardNo"]; // 경대병원 파리미터 추가 changingGlobalParams[FOSParameter.tag1] = consentMain.ConsentExecuteInfo["tag1"]; changingGlobalParams[FOSParameter.tag2] = consentMain.ConsentExecuteInfo["tag2"]; changingGlobalParams[FOSParameter.tag3] = consentMain.ConsentExecuteInfo["tag3"]; changingGlobalParams[FOSParameter.tag4] = consentMain.ConsentExecuteInfo["tag4"]; changingGlobalParams[FOSParameter.tag5] = consentMain.ConsentExecuteInfo["tag5"]; changingGlobalParams[FOSParameter.tag6] = consentMain.ConsentExecuteInfo["tag6"]; changingGlobalParams[FOSParameter.tag7] = consentMain.ConsentExecuteInfo["tag7"]; changingGlobalParams[FOSParameter.tag8] = consentMain.ConsentExecuteInfo["tag8"]; changingGlobalParams[FOSParameter.tag9] = consentMain.ConsentExecuteInfo["tag9"]; changingGlobalParams[FOSParameter.tag10] = consentMain.ConsentExecuteInfo["tag10"]; // 한번 사용한 후 해당 설정은 초기화 consentMain.ConsentExecuteInfo["tag1"] = string.Empty; consentMain.ConsentExecuteInfo["tag2"] = string.Empty; consentMain.ConsentExecuteInfo["tag3"] = string.Empty; consentMain.ConsentExecuteInfo["tag4"] = string.Empty; consentMain.ConsentExecuteInfo["tag5"] = string.Empty; consentMain.ConsentExecuteInfo["tag6"] = string.Empty; consentMain.ConsentExecuteInfo["tag7"] = string.Empty; consentMain.ConsentExecuteInfo["tag8"] = string.Empty; consentMain.ConsentExecuteInfo["tag9"] = string.Empty; consentMain.ConsentExecuteInfo["tag10"] = string.Empty; ChangeGlobalParametersToNew(globalParams, changingGlobalParams); } /// /// 임시저장 동의서를 보여준다 /// /// public void ShowTempSaveConsent(IConsentMain consentMain) { if(string.IsNullOrEmpty(this.CurrentPreviewConsent.consentMstRid) || this.CurrentPreviewConsent.consentMstRid.Equals("-1")) { return; } List formGuids = new List(); //formGuids.Add(this.CurrentPreviewConsent.formGuid); Dictionary actionParams = new Dictionary { { "rid", this.CurrentPreviewConsent.consentMstRid }//선택한 리스트의 rid, state }; Dictionary globalParams = new Dictionary(); if(!string.IsNullOrEmpty(this.CurrentPreviewConsent.ordType)) { if(!this.CurrentPreviewConsent.ordType.Equals("O")) { globalParams[FOSParameter.UserName] = consentMain.ConsentExecuteInfo["loginUserName"]; } if(CurrentEndUser.JobKindCd.Contains("03")) { globalParams[FOSParameter.ExplDrName] = CurrentEndUser.UserName ?? string.Empty; globalParams[FOSParameter.ExplDrTelNo] = CurrentEndUser.UserTelNo ?? string.Empty; // 사용자의 서명 이미지를 가져온다 UserSignImageVO vo = this.hospitalWebService.GetSignImage(this.CurrentEndUser.UserNo, this.consentMain.ConsentExecuteInfo["dutinstcd"]); if(vo != null && vo.SignImage != null && vo.SignImage.Length > 0) { // 서명 이미지를 BASE64 형식으로 변환한다. //globalParams[FOSParameter.SignImage] = ImageToBase64(byteArrayToImage(vo.SignImage), System.Drawing.Imaging.ImageFormat.Png); // 의사의 경우라면 설명의사에 서명이미지를 설정한다 globalParams[FOSParameter.ExplDrSign] = ImageToBase64(byteArrayToImage(vo.SignImage), System.Drawing.Imaging.ImageFormat.Png) ?? string.Empty; } } } //string fos = Common.GetFosStringForEpt(actionParams, consentMain.PluginExecuteInfo["formServiceUrl"], globalParams, consentMain.ConsentExecuteInfo["dutinstcd"]); SingleReturnData returnData = this.consentWebService.CheckConsentState(int.Parse(this.CurrentPreviewConsent.consentMstRid), this.CurrentPreviewConsent.consentStateEng); int state = Int32.Parse(returnData.responseData); if(state == 1) { MessageBoxDlg.Show(this, "이미 저장된 서식 입니다." , string.Format(Properties.Resources.msg_caption_confirm), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } string newFos = Common.getNewEptFosString(consentMain.PluginExecuteInfo["formServiceUrl"], consentMain.PluginExecuteInfo["baseConsentSvcURL"], globalParams, new List { CurrentPreviewConsent.formId }, new List { CurrentPreviewConsent.consentMstRid }); consentMain.PreviewConsent(newFos); // 외래 환자 외에는 작성 완료(확인) 버튼 안보이게 설정 /* if(!CurrentTargetPatient.VisitType.Equals("O")) { toolStripButtonCompleteSaveToServer.Visible = false; } else { toolStripButtonCompleteSaveToServer.Visible = true; } */ consentMain.ConsentCommandCtrl.SetEnableConsentIssueCommands(true); consentMain.ConsentCommandCtrl.SetEnableButtonsByCurrentConsent(); SetEnableByUserType(); } private Image byteArrayToImage(byte[] byteArrayIn) { MemoryStream ms = new MemoryStream(byteArrayIn); Image returnImage = Image.FromStream(ms); return returnImage; } /// /// 동의서 임시 데이터 저장 /// /// /// public override void SaveTempConsentData(string eptXmlValue, string dataValue) { //int state = this.consentWebService.CheckConsentState(int.Parse(this.CurrentPreviewConsent.ConsentMstRid), this.CurrentPreviewConsent.ConsentState); SingleReturnData returnData = this.consentWebService.CheckConsentState(int.Parse(this.CurrentPreviewConsent.consentMstRid), this.CurrentPreviewConsent.consentStateEng); int state = Int32.Parse(returnData.responseData); if(state == 1) { MessageBoxDlg.Show(this, "이미 저장된 서식 입니다." , string.Format(Properties.Resources.msg_caption_confirm), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //string userId = CurrentEndUser.UserNo; //string userId = this.consentMain.ConsentExecuteInfo["loginUserNo"]; //string userName = this.consentMain.ConsentExecuteInfo["loginUserName"]; string userId = this.consentMain.ConsentExecuteInfo["loginUserNo"]; string userName = this.consentMain.ConsentExecuteInfo["loginUserName"]; string deptCd = this.consentMain.ConsentExecuteInfo["userDeptCd"]; string hosType = this.consentMain.ConsentExecuteInfo["dutinstcd"]; if (string.IsNullOrEmpty(userName)) { UserVO userVo = hospitalWebService.GetUserInfo(userId, hosType, deptCd); userName = userVo.userName; } string patientCode = CurrentTargetPatient.PatientCode; string clnDeptCode = CurrentTargetPatient.clnDeptCode; string vistType = CurrentTargetPatient.VisitType; string clnDate = CurrentTargetPatient.clnDate.Replace("-", ""); int rewriteConsentMstRid = 0; string ward = CurrentTargetPatient.Ward; string roomcd = CurrentTargetPatient.RoomNo; string formRid = CurrentPreviewConsent.formId; string formCd = CurrentPreviewConsent.formCd; string consentMstRid = CurrentPreviewConsent.consentMstRid; int orderNo = CurrentTargetPatient.OrderNo; string orderCode = CurrentTargetPatient.clnDxCd; string orderName = CurrentTargetPatient.clnDxNm; string mainDrId = this.CurrentTargetPatient.MainDrId; int.TryParse(CurrentTargetPatient.cretno, out int cretno); ConvertStringToInt(formRid, consentMstRid, out int formRidInt, out int consentMstRidInt); string deviceIdentNo = System.Environment.MachineName; Cursor currentCursor = this.Cursor; try { this.Cursor = Cursors.WaitCursor; string ocrCode = CurrentPreviewConsent.ocrCode; if(string.IsNullOrEmpty(ocrCode)) { ocrCode = CurrentPreviewConsent.ocrCode = GetOcrCode(); } SingleReturnData returnData2 = this.consentWebService.SaveTempData(userId , patientCode , clnDeptCode , formRidInt , formCd , consentMstRidInt , rewriteConsentMstRid , eptXmlValue , dataValue , consentMain.ConsentExecuteInfo["DeviceType"] //"WIN" , deviceIdentNo , vistType , consentMain.ConsentExecuteInfo["dutinstcd"] , clnDate , ward , roomcd , orderNo , orderName , orderCode , ocrCode , cretno , userName , userName , mainDrId , CurrentEndUser.DeptCode , consentMain.GetTotalPageCount().ToString() , "T" , "P" // 임시저장 시 P 상태로 기록, 스캔 매수 입력 하도록 설정 , CurrentTargetPatient.OpRsrvNo // dbs227, 확인 저장 시 일괄저장이 가능하도록 ELECTR_CMP 상태로 바꿈 , m_IsComplete ? "ELECTR_CMP" : ""); consentMstRidInt = Int32.Parse(returnData2.responseData); // 현재 사용하지 않음 //기왕력 데이터 저장 //SetNewMedicalHistory(dataValue); // 작성 완료 시 if(m_IsComplete) { MessageBoxDlg.Show(this, string.Format(Properties.Resources.msg_confirm_save_confirm) , string.Format(Properties.Resources.msg_caption_confirm), MessageBoxButtons.OK, MessageBoxIcon.Information); // 작성 완료 시는 이력 탭 보기 this.consentMain.ConsentListCtrl.InquiryConsentData(0); } else { if (consentMain.multiParams == null) { this.consentMain.ConsentListCtrl.InquiryConsentData(consentMstRidInt); } // Ku2.0 연동 시에는 메시지를 띄우지 않는다 if(consentMain.ConsentExecuteInfo["printYN"].Equals("Y")) { MessageBoxDlg.Show(this, string.Format(Properties.Resources.msg_temp_save_confirm) , string.Format(Properties.Resources.msg_caption_confirm), MessageBoxButtons.OK, MessageBoxIcon.Information); } } } catch(Exception ex) { throw ex; } finally { this.Cursor = currentCursor; } } /// /// 현재의 문진기록을 저장한다 /// /// The data XML. private void SetNewMedicalHistory(string dataXml) { Dictionary outputDataDic = DataXmlToDictionary(dataXml); if(outputDataDic.ContainsKey(FOSParameter.BP)) this.CurrentTargetPatient.Ex_bp = outputDataDic[FOSParameter.BP]; if(outputDataDic.ContainsKey(FOSParameter.DM)) this.CurrentTargetPatient.Ex_dm = outputDataDic[FOSParameter.DM]; if(outputDataDic.ContainsKey(FOSParameter.Heart)) this.CurrentTargetPatient.Ex_heart = outputDataDic[FOSParameter.Heart]; if(outputDataDic.ContainsKey(FOSParameter.Kidney)) this.CurrentTargetPatient.Ex_kidney = outputDataDic[FOSParameter.Kidney]; if(outputDataDic.ContainsKey(FOSParameter.Respiration)) this.CurrentTargetPatient.Ex_respiration = outputDataDic[FOSParameter.Respiration]; if(outputDataDic.ContainsKey(FOSParameter.MedicalHistory)) this.CurrentTargetPatient.Ex_hx = outputDataDic[FOSParameter.MedicalHistory]; if(outputDataDic.ContainsKey(FOSParameter.Allergy)) this.CurrentTargetPatient.Ex_allergy = outputDataDic[FOSParameter.Allergy]; if(outputDataDic.ContainsKey(FOSParameter.Drug)) this.CurrentTargetPatient.Ex_drug = outputDataDic[FOSParameter.Drug]; if(outputDataDic.ContainsKey(FOSParameter.Smoking)) this.CurrentTargetPatient.Ex_smoking = outputDataDic[FOSParameter.Smoking]; if(outputDataDic.ContainsKey(FOSParameter.Idiosyncrasy)) this.CurrentTargetPatient.Ex_idio = outputDataDic[FOSParameter.Idiosyncrasy]; if(outputDataDic.ContainsKey(FOSParameter.Nacrotics)) this.CurrentTargetPatient.Ex_nacrotics = outputDataDic[FOSParameter.Nacrotics]; if(outputDataDic.ContainsKey(FOSParameter.Airway)) this.CurrentTargetPatient.Ex_airway = outputDataDic[FOSParameter.Airway]; if(outputDataDic.ContainsKey(FOSParameter.Hemorrhage)) this.CurrentTargetPatient.Ex_hemorrhage = outputDataDic[FOSParameter.Hemorrhage]; if(outputDataDic.ContainsKey(FOSParameter.EtcStatus)) this.CurrentTargetPatient.Ex_status_etc = outputDataDic[FOSParameter.EtcStatus]; } /// /// Data XML을 Dictionary 타입으로 변환하여 반환 /// /// 변환될 Data XML /// private static Dictionary DataXmlToDictionary(string dataXml) { Dictionary outputDataDic; XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(dataXml); outputDataDic = outputDataDic = new Dictionary(); XmlNode rootNode = xmlDocument.SelectSingleNode("form-data"); foreach(XmlNode childNode in rootNode.ChildNodes) { string fieldName = string.Empty; string fieldValue = string.Empty; XmlElement outFieldElement = childNode as XmlElement; if(outFieldElement == null) { } else { fieldName = outFieldElement.Name; if(fieldName.Equals("state")) { foreach(XmlNode childNode2 in childNode.ChildNodes) { XmlElement outFieldElement2 = childNode2 as XmlElement; FOSParameter fieldName2 = (FOSParameter)Enum.Parse(typeof(FOSParameter), outFieldElement2.Name); string fieldValue2 = string.Empty; if(outFieldElement2.ChildNodes.Count > 0 && outFieldElement2.ChildNodes[0] is XmlCDataSection) { fieldValue2 = ((XmlCDataSection)outFieldElement2.ChildNodes[0]).InnerText; } if(outputDataDic.ContainsKey(fieldName2)) { outputDataDic[fieldName2] = fieldValue2; } else { outputDataDic.Add(fieldName2, fieldValue2); } } } } } return outputDataDic; } /// /// 동의서 완료 데이터 저장 /// /// /// public override bool SaveCompleteConsentData(string eptXmlValue, string dataValue, out object saveResult) { int translateResult = -1; string sCertTarget = string.Empty; string sCertResult = string.Empty; string consentState = "ELECTR_CMP"; string sizeValue = string.Empty; try { // 인증저장된 이미지 파일을 서버로 전송 translateResult = TranslateConsentToImageServer(exportedImageFiles, sCertResult, out string fileSizes); sizeValue = fileSizes; } catch(Exception ex) { string exMessage = ex.Message; if(ex.InnerException != null) { exMessage += Environment.NewLine + ex.InnerException.Message; } MessageBoxDlg.Show(true, string.Format(exMessage) , string.Format("CLIP e-Form Consent-" + Properties.Resources.msg_caption_fail), MessageBoxButtons.OK, MessageBoxIcon.Error); saveResult = translateResult; return false; } // TODO 원무 인증 저장 pass // 원무 인증저장일 경우 인증 저장 pass if(this.consentWebService.getCertUseYn(this.currentPreviewConsent.formCd, consentMain.ConsentExecuteInfo["dutinstcd"]) == "Y") //if (false) { consentState = "CERTIFY_CMP"; } else if(this.m_IsComplete) { // 인증저장 시 공인인증 처리 하지 않는다. } // 원무 인증저장이 아닐경우 기존루틴 else { SignatureConfig sign = new SignatureConfig(); try { // 공인인증 처리용 sCertTarget = sign.getSHA256ImageHash(exportedImageFiles, string.Empty); // 공인인증 처리 sCertResult = ConsentImageSignature(sCertTarget, CurrentEndUser.UserNo, CurrentEndUser.UserName); if(sCertResult == "-10") { // "로그인 사용자 정보를 통하여 공인인증서 정보가 정상적으로 조회되지 않았습니다." MessageBoxDlg.Show(true, Properties.Resources.msg_sign_user_info_fail , string.Format("CLIP e-Form Consent-" + Properties.Resources.msg_caption_fail), MessageBoxButtons.OK, MessageBoxIcon.Error); saveResult = "-99"; return true; } else if(sCertResult == "-20") { // "공인인증 서버 접속에 실패하였을 하였습니다." MessageBoxDlg.Show(true, Properties.Resources.msg_sign_server_connection_fail , string.Format("CLIP e-Form Consent-" + Properties.Resources.msg_caption_fail), MessageBoxButtons.OK, MessageBoxIcon.Error); saveResult = "-99"; return true; } else if(sCertResult == "-30") { // "공인인증 서버 접속에 실패하였을 하였습니다." MessageBoxDlg.Show(true, Properties.Resources.msg_sign_server_connection_fail , string.Format("CLIP e-Form Consent-" + Properties.Resources.msg_caption_fail), MessageBoxButtons.OK, MessageBoxIcon.Error); saveResult = "-99"; return true; } else if(sCertResult == "-35") { // 공인인증 비밀번호 입력하지 않고 닫음 saveResult = "-99"; return true; } else if(sCertResult == "-40") { // "공인인증서 비밀번호가 틀렸습니다. MessageBoxDlg.Show(true, Properties.Resources.msg_sign_password_fail , string.Format("CLIP e-Form Consent-" + Properties.Resources.msg_caption_fail), MessageBoxButtons.OK, MessageBoxIcon.Error); saveResult = "-99"; return true; } else if(sCertResult == "-50") { // "공인인증서명 처리를 실패하였을 하였습니다." MessageBoxDlg.Show(true, Properties.Resources.msg_sign_exec_fail , string.Format("CLIP e-Form Consent-" + Properties.Resources.msg_caption_fail), MessageBoxButtons.OK, MessageBoxIcon.Error); saveResult = "-99"; return true; } else if(sCertResult == "-99") { // "공인인증서명 처리를 실패하였을 하였습니다." MessageBoxDlg.Show(true, Properties.Resources.msg_sign_exec_fail , string.Format("CLIP e-Form Consent-" + Properties.Resources.msg_caption_fail), MessageBoxButtons.OK, MessageBoxIcon.Error); saveResult = "-99"; return true; } translateResult = 1; // 확인저장이 아니라면 인증저장이다 if(!m_IsComplete) { consentState = "CERTIFY_CMP"; } } catch(Exception ex) { string exMessage = ex.Message; if(ex.InnerException != null) { exMessage += Environment.NewLine + ex.InnerException.Message; } MessageBoxDlg.Show(true, string.Format(exMessage) , string.Format("CLIP e-Form Consent-" + Properties.Resources.msg_caption_fail), MessageBoxButtons.OK, MessageBoxIcon.Error); saveResult = translateResult; return false; } // DB 저장용 sCertTarget = sign.getSHA256ImageHash(exportedImageFiles, "^"); } //string userId = CurrentEndUser.UserNo; //string userName = CurrentEndUser.UserName; string userId = this.consentMain.ConsentExecuteInfo["loginUserNo"]; string userName = this.consentMain.ConsentExecuteInfo["loginUserName"]; string deptCd = this.consentMain.ConsentExecuteInfo["userDeptCd"]; string hosType = consentMain.ConsentExecuteInfo["dutinstcd"]; if (string.IsNullOrEmpty(userName)) { UserVO userVo = hospitalWebService.GetUserInfo(userId, hosType, deptCd); userName = userVo.userName; } string patientCode = CurrentTargetPatient.PatientCode; string clnDeptCode = CurrentTargetPatient.clnDeptCode; string vistType = CurrentTargetPatient.VisitType; string clnDate = CurrentTargetPatient.clnDate.Replace("-", "").Replace("/", ""); string ward = CurrentTargetPatient.Ward; string roomcd = CurrentTargetPatient.RoomNo; string formRid = CurrentPreviewConsent.formId; string formCd = CurrentPreviewConsent.formCd; string consentMstRid = CurrentPreviewConsent.consentMstRid; int rewriteConsentMstRid = CurrentPreviewConsent.RewriteConsentMstRid; int orderNo = CurrentTargetPatient.OrderNo; string orderCode = CurrentTargetPatient.clnDxCd; string orderName = CurrentTargetPatient.clnDxNm; string dschdd = CurrentTargetPatient.Dschdd; string mainDrId = this.CurrentTargetPatient.MainDrId; string actKind = (consentState.Equals("CERTIFY_CMP") ? "C" : "T"); //string ocrCode = CurrentPreviewConsent.Ocrcode; //if (string.IsNullOrEmpty(ocrCode)) { // ocrCode = CurrentPreviewConsent.Ocrcode = GetOcrCode(); //} int.TryParse(CurrentTargetPatient.cretno, out int cretno); ConvertStringToInt(formRid, consentMstRid, out int formRidInt, out int consentMstRidInt); string deviceIdentNo = System.Environment.MachineName; Cursor currentCursor = this.Cursor; try { this.Cursor = Cursors.WaitCursor; string ocrCode = CurrentPreviewConsent.ocrCode; if(string.IsNullOrEmpty(ocrCode)) { ocrCode = CurrentPreviewConsent.ocrCode = GetOcrCode(); } SingleReturnData returnData = this.consentWebService.SaveCompleteAll(userId , patientCode , clnDeptCode , formRidInt , formCd , consentMstRidInt , rewriteConsentMstRid , eptXmlValue , dataValue , consentMain.ConsentExecuteInfo["DeviceType"] //"WIN" , deviceIdentNo , vistType , consentMain.ConsentExecuteInfo["dutinstcd"] //hosType, hostype 대신 근무지기관코드를 전송한다 , clnDate , ward , roomcd , orderNo , orderName , orderCode , ocrCode , cretno , userName , userName , this.exportedImageFilesJson , sCertTarget , sCertResult , dschdd , consentState , mainDrId , CurrentEndUser.DeptCode , consentMain.GetTotalPageCount().ToString() , actKind , "P" , CurrentTargetPatient.OpRsrvNo , sizeValue); consentMstRidInt = Int32.Parse(returnData.responseData); // 기왕력 데이터 저장 sPID //SetNewMedicalHistory(dataValue); if (consentMain.multiParams == null) { // 인증 저장 후에는 이력 탭 설정 this.consentMain.ConsentListCtrl.InquiryConsentData(0); } // dbs227 // TODO 인증저장 후 종료 메시지 및 닫기 버튼 //MessageBoxDlg.Show(this, string.Format(Properties.Resources.msg_esign_N_comp_save_confirm) // , string.Format(Properties.Resources.msg_caption_confirm), // MessageBoxButtons.OK, MessageBoxIcon.Information); // 확인 저장 시 닫기 버튼 활성화 하지 않는다. if(!consentState.Equals("ELECTR_CMP")) { //연속서식의 경우 모든 서식을 작성할 때 까지 메시지를 띄우지 않는다. if (consentMain.multiParams != null) { int page = 0; Dictionary pageParam = consentMain.multiParams[consentMain.multiParams.Count - 1]; if (pageParam.ContainsKey("PAGE_COUNT")) { page = Int32.TryParse(pageParam["PAGE_COUNT"].ToString(), out int pageNumber) ? pageNumber : -1; } else { MessageBox.Show("연속서식 페이지오류", Properties.Resources.msg_caption_fail, MessageBoxButtons.OK, MessageBoxIcon.Error); saveResult = "-99"; return true; } if ((consentMain.multiParams.Count - 2) == page) { MessageBox.Show("모든 서식을 저장하였습니다, 확인을 누르면 종료합니다.", string.Format(Properties.Resources.msg_caption_confirm), MessageBoxButtons.OK, MessageBoxIcon.Information); this.consentMain.Parent_Disposed(); } } else { DialogResult dialogResult = MessageBoxDlg.Show(this, string.Format(Properties.Resources.msg_esign_N_comp_save_confirm) , string.Format(Properties.Resources.msg_caption_confirm), MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (dialogResult == DialogResult.Yes) { if (this.consentMain.ConsentExecuteInfo["printAct"].Equals("Y")) { this.consentMain.Parent_Disposed(); } else { this.ParentForm.WindowState = FormWindowState.Minimized; } } } } if (consentMain.multiParams == null) { this.consentMain.ReInitializeViewer(); } } catch(Exception ex) { throw ex; } finally { this.Cursor = currentCursor; try { if(!string.IsNullOrEmpty(exportedImageFiles)) { string[] imgFile = exportedImageFiles.Split('^'); if(imgFile != null && imgFile.Length > 0) { FileInfo fileInfo; foreach(string sImgFileName in imgFile) { fileInfo = new FileInfo(sImgFileName); if(fileInfo != null) { // 이미지 파일 삭제 fileInfo.Delete(); } } fileInfo = new FileInfo(imgFile[0].Replace("_0.jpg", ".xml")); if(fileInfo != null) { // EPT 파일 삭제 fileInfo.Delete(); } } } } catch(System.IO.IOException e) { throw e; } } saveResult = 1; return true; } /// /// 전자서명을 한다 /// /// 전자서명 대상 /// 사용자ID /// 사용자 이름 /// 전자서명의 결과값 private string ConsentImageSignature(string sCertTarget, string userId, string userName) { string resultValue = string.Empty; try { if(!string.IsNullOrEmpty(sCertTarget)) { // 공인인증 서명 SignatureConfig sign = new SignatureConfig(); string rtn = ""; // 메모리에 본인 공인인증서가 아닐 경우 string sSignIp = consentMain.PluginExecuteInfo["signatureServerUrl"]; string sSignPort = consentMain.PluginExecuteInfo["signatureServerPort"]; int iPort = 0; int.TryParse(sSignPort, out iPort); // 공인인증 서버 접속 rtn = sign.SetSignServerInfo(sSignIp, iPort, userId); // 공인인증 서명 resultValue = sign.SignatureExec(sCertTarget, rtn, userName, userId, this.consentMain.saveClickPoint); if(string.IsNullOrEmpty(resultValue) || resultValue == "-1") { // 공인인증 서명에 실패하였을 경우 return "-50"; } } } catch(Exception ex) { MessageBoxDlg.Show(true, string.Format(ex.Message) , string.Format(Properties.Resources.msg_caption_confirm), MessageBoxButtons.OK, MessageBoxIcon.Information); resultValue = "-99"; } return resultValue; } /// /// 서버로 이미지 파일 전송 /// /// 전송할 이미지 파일 /// 공인인증 결과 /// private int TranslateConsentToImageServer(string exportedImageFiles, string sCertResult, out string fileSizes) { int resultValue = -1; fileSizes = string.Empty; if(!string.IsNullOrEmpty(exportedImageFilesJson) && !string.IsNullOrEmpty(exportedImageFiles)) { Dictionary jsonRoot = null; try { jsonRoot = fastJSON.JSON.Parse(exportedImageFilesJson) as Dictionary; if(jsonRoot != null && jsonRoot.Count > 0) { string sPath = string.Empty; string sFileName = string.Empty; string[] sFullPath = exportedImageFiles.Split('^'); int k = 0; foreach(KeyValuePair jr in jsonRoot) { if(jr.Value != null && !string.IsNullOrEmpty(jr.Value.ToString())) { sPath = string.Empty; sFileName = string.Empty; string[] filepath = jr.Value.ToString().Split('/'); for(int i = 0; i < filepath.Length; i++) { if(i == 0) { sPath = filepath[i]; } else if((i + 1) == filepath.Length) { sFileName = filepath[i]; } else { sPath += "/" + filepath[i]; } } //이미지를 서버에 업로드(전자동의서 서버에 저장) System.Net.WebClient wcClient = new System.Net.WebClient(); string imageUploadServerUrl = this.consentMain.PluginExecuteInfo["imageUploadServerUrl"]; System.Collections.Specialized.NameValueCollection values = new System.Collections.Specialized.NameValueCollection(); values.Add("up_path", sPath + "/" + sFileName); wcClient.QueryString = values; var fileInfo = new FileInfo(sFullPath[k]); if(k != 0) { fileSizes += ","; } if(fileInfo != null) { fileSizes += fileInfo.Length / 1024; } byte[] response = wcClient.UploadFile(imageUploadServerUrl, "POST", sFullPath[k++]); } } } } catch(Exception) { return resultValue = -99; } resultValue = 1; } return resultValue; } //private int TranslateConsentToImageServer(string exportedImageFiles, int consentMstRidInt, string sCertResult) //{ // int resultValue = -1; // if (!string.IsNullOrEmpty(exportedImageFiles)) // { // string[] aryimgFile = exportedImageFiles.Split('^'); // if (aryimgFile != null && aryimgFile.Length > 0) // { // try // { // int consentImageRid_F = 0; // string sCertTarget = ""; // for (int i = 0; i < aryimgFile.Length; i++) // { // string imgFile = aryimgFile[i]; // //MessageBox.Show(CurrentTargetPatient.PatientCode + "," + CurrentTargetPatient.VisitType + "," + CurrentTargetPatient.clnDate + "," + "20150815" + "," + CurrentTargetPatient.cretno + "," + "500" + "," + CurrentPreviewConsent.FormCd + "," + i.ToString() + "," + CurrentPreviewConsent.Ocrcode + "," + CurrentEndUser.UserNo); // //LCTech 모듈을 위한 DB 작업을 하고 저장할 파일명을 얻는다. // string newFileFullName = this.hospitalWebService.GetFileName(CurrentTargetPatient.PatientCode, CurrentTargetPatient.VisitType, // CurrentTargetPatient.clnDate.Replace("-", ""), CurrentTargetPatient.Dschdd, CurrentTargetPatient.cretno, // "500", CurrentPreviewConsent.FormCd, i.ToString(), // CurrentPreviewConsent.Ocrcode, CurrentEndUser.UserNo); // //MessageBox.Show(newFileFullName); //O:\fnuImage\201607\19\100501967 // string uploadFileName = newFileFullName + ".jpg"; // if (string.IsNullOrEmpty(newFileFullName)) // { // return -10; // } // //이미지 정보 DB에 저장 // int consentImageRid = this.consentWebService.SaveImageUploadInfo("ELECTR_CMP", uploadFileName, // consentMstRidInt, CurrentEndUser.UserNo, int.Parse(CurrentPreviewConsent.FormRid)); // /* // //저장된 이미지에서 해쉬정보 추출 // string sCertTarget = GetImageCertification(imgFile); // //해쉬정보 DB에 저장 // this.consentWebService.SaveImageSignInfo("ELECTR_CMP", consentMstRidInt, consentImageRid, // CurrentEndUser.UserNo, sCertTarget); // */ // if (i == 0) consentImageRid_F = consentImageRid; //첫번째 consentImageRid 를 저장한다. // sCertTarget += GetImageCertification(imgFile) + "^"; // //이미지를 서버에 업로드(서버에서 나스에 저장) // System.Net.WebClient wcClient = new System.Net.WebClient(); // string imageUploadServerUrl = this.consentMain.PluginExecuteInfo["imageUploadServerUrl"]; // System.Collections.Specialized.NameValueCollection values = new System.Collections.Specialized.NameValueCollection(); // values.Add("up_path", uploadFileName); // wcClient.QueryString = values; // wcClient.UploadFile(imageUploadServerUrl, "POST", imgFile); // File.Delete(imgFile); // } // // 외래일 경우 공인인증 처리가 없음. // if (!string.IsNullOrEmpty(CurrentTargetPatient.VisitType) && !CurrentTargetPatient.VisitType.Equals("O")) // { // sCertTarget = sCertTarget.Substring(0, sCertTarget.Length - 1); // this.consentWebService.SaveImageSignInfo("ELECTR_CMP", consentMstRidInt, consentImageRid_F, // CurrentEndUser.UserNo, sCertTarget, sCertResult); // } // resultValue = 1; // } // catch (Exception err) // { // resultValue = -99; // throw err; // } // } // } // return resultValue; //} /// /// 공인인증 이미지를 가져옴 /// 사용되는 곳 없음 /// /// The exported image file. /// private string GetImageCertification(string exportedImageFile) { try { FileStream fileStream = null; fileStream = new FileStream(exportedImageFile, FileMode.Open); fileStream.Position = 0; SHA256 mySHA256 = SHA256Managed.Create(); byte[] hashValue = mySHA256.ComputeHash(fileStream); fileStream.Close(); return byteArrayToString(hashValue); } catch(Exception ex) { string exMessage = ex.Message; if(ex.InnerException != null) { exMessage += Environment.NewLine + ex.InnerException.Message; } return exMessage; } } private string byteArrayToString(byte[] bStr) { string hexOutput = string.Empty; foreach(char letter in bStr) { int value = Convert.ToInt32(letter); hexOutput += String.Format("{0:x}", value); } return hexOutput; } /// /// 이미지 업로드시 사용될 exportedImageFilesJson 객체에 JSON 스타일로 값을 설정 /// /// 저장될 이미지 파일 설명 public override void WorkExtraWithSavedImageFiles(string savedImageFileDescription) { string[] aryImageInfo = savedImageFileDescription.Split(';'); Dictionary dicImageInfo = new Dictionary(); foreach(string imageInfo in aryImageInfo) { string[] aryInfo = imageInfo.Split('='); if(aryInfo.Length == 2) { dicImageInfo.Add(aryInfo[0], aryInfo[1]); } } int baseIndex = -1; int.TryParse(dicImageInfo["base-index"], out baseIndex); int totalFiles = -1; int.TryParse(dicImageInfo["total-files"], out totalFiles); if(baseIndex > -1 && totalFiles > 0) { this.exportedImageFiles = string.Empty; this.exportedImageFilesJson = "{ "; string sUploadPath = string.Empty; for(int i = baseIndex; i < baseIndex + totalFiles; i++) { string exportedImageFile = string.Format("{0}\\{1}_{2}.{3}", dicImageInfo["path"], dicImageInfo["key"], i, dicImageInfo["extention"]); exportedImageFiles += exportedImageFile; sUploadPath = string.Format("{0}/{1}", DateTime.Now.ToString("yyyyMM"), DateTime.Now.ToString("dd")); this.exportedImageFilesJson += string.Format("\"imageFile{0}\" : \"{1}/{2}_{3}.{4}\"", i, sUploadPath, dicImageInfo["key"], i, dicImageInfo["extention"]); if(i + 1 < (baseIndex + totalFiles)) { exportedImageFiles += "^"; this.exportedImageFilesJson += ", "; } } this.exportedImageFilesJson += " }"; System.Diagnostics.Debug.WriteLine("Debug=> exportedImageFiles: " + this.exportedImageFiles); System.Diagnostics.Debug.WriteLine("Debug=> exportedImageFilesJson: " + this.exportedImageFilesJson); } } private void ConvertStringToInt(string formRid, string consentMstRid, out int formRidInt, out int consentMstRidInt) { formRidInt = 0; int.TryParse(formRid, out formRidInt); consentMstRidInt = 0; int.TryParse(consentMstRid, out consentMstRidInt); } /// /// baseGlobalParams 의 딕셔너리 객체에 changingGlobalParams 의 딕셔너리 객체의 요소들을 변경함 /// 기존 baseGlobalParams 딕셔너리에 key 가 없으면 추가되지 않음 /// /// 복사될 딕셔너리 객체 /// 복사할 딕셔너리 객체 private void ChangeGlobalParametersToNew(Dictionary baseGlobalParams, Dictionary changingGlobalParams) { foreach(FOSParameter dicKey in changingGlobalParams.Keys) { if(baseGlobalParams.ContainsKey(dicKey)) { baseGlobalParams[dicKey] = changingGlobalParams[dicKey]; } } } /// /// 사용자에 따른 버튼 활성화 /// private void SetEnableByUserType() { // 기록 테이블의 출력 유무에 따른 서명버튼 활성화 처리 SetSaveButtonDisabledWhenPrintYN(); } /// /// 출력, 임시저장, 출력 버튼 활성화 여부 설정 /// private void SetSaveButtonDisabledWhenPrintYN() { // 뷰어 모드 적용 if(consentMain.ConsentExecuteInfo["readOnly"].Equals("Y")) { this.toolStripButtons.Enabled = false; return; } if(CurrentEndUser == null || CurrentPreviewConsent == null) { return; } string printOnly = CurrentPreviewConsent.printOnly ?? string.Empty; string consentState = CurrentPreviewConsent.consentState ?? string.Empty; // 출력만 가능하게 설정 if(printOnly.Equals("Y")) { this.toolStripButtonPrint.Enabled = true; //this.toolStripButtonCompleteSaveToServer.Enabled = false; this.toolStripButtonSaveToServer.Enabled = false; this.toolStripButtonTempSaveToServer.Enabled = false; this.toolStripButtonExecute.Enabled = false; } // 출력 상태일 경우 재출력만 가능하도록 버튼 조정 else if(consentState.ToUpper().Equals("PAPER_OUT")) { this.toolStripButtonExecute.Enabled = false; } // 작성 완료일 경우 임시 저장 불가 else if(consentState.ToUpper().Equals("ELECTR_CMP")) { this.toolStripButtonTempSaveToServer.Enabled = false; } } private bool checkPrintablePatients(List volist) { foreach(PatListVO patInfo in volist) { var cnt = hospitalWebService.checkPrintablePatient(consentMain.ConsentExecuteInfo["dutinstcd"], patInfo.pid, patInfo.inDd.Replace("/", "").Replace("-", ""), patInfo.cretNo.ToString()); if(cnt > 0) { return false; } } return true; } /// /// 동의서 출력 /// private void PrintConsent() { // 환자정보가 없을 경우 출력이 되지 않도록 적용 if(this.CurrentTargetPatient == null || string.IsNullOrEmpty(this.CurrentTargetPatient.PatientCode) || string.IsNullOrEmpty(this.CurrentTargetPatient.PatientName)) { DialogResult result = MessageBox.Show(string.Format(Properties.Resources.msg_error_user_data) , string.Format(Properties.Resources.msg_caption_fail), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // 출력 : patientInfo 를 기반으로 출력하는 경우와 환자목록에서 멀티선택 출력의 경우로 나눠야 한다. List volist = consentMain.PatientListCtrl.GetSelectedPatientList(); // 1명 출력할 경우 if(volist.Count == 1) { if(this.CurrentPreviewConsent.consentMstRid != null && !string.IsNullOrEmpty(this.CurrentPreviewConsent.consentMstRid) && !this.CurrentPreviewConsent.consentMstRid.Equals("-1") && !this.CurrentPreviewConsent.consentMstRid.Equals("0")) { DialogResult result = MessageBox.Show(string.Format(Properties.Resources.msg_multi_print_fail) , string.Format(Properties.Resources.msg_caption_fail), MessageBoxButtons.OK, MessageBoxIcon.Information); } else { PrintConsentDocument(); } // 환자 목록에서 여러명을 체크박스로 선택하여 출력할 경우 } else if(volist.Count > 0) { var cnt = hospitalWebService.getMultiprintable(consentMain.ConsentExecuteInfo["dutinstcd"], CurrentPreviewConsent.formCd); if(cnt < 1) { MessageBox.Show("멀티출력 가능한 서식이 아닙니다. 전산실에 문의 하세요."); return; } // 여러 환자 선택 시 출력 할 수 없는 수진이력이 있는지 확인한다. if(!checkPrintablePatients(volist)) { // 6961 [전자동의서]출력시 특정 진찰료 면제사유시 제어 switch var runCount = hospitalWebService.checkHardcd(consentMain.ConsentExecuteInfo["dutinstcd"], "6961", "Y"); if(runCount > 0) { MessageBox.Show("다중 선택된 환자 중 출력할 수 없는 수진이력이 있습니다.\n(문의: 의무기록팀)", "확인", MessageBoxButtons.OK); return; } } if(this.CurrentPreviewConsent.consentMstRid != null && !string.IsNullOrEmpty(this.CurrentPreviewConsent.consentMstRid) && !this.CurrentPreviewConsent.consentMstRid.Equals("-1") && !this.CurrentPreviewConsent.consentMstRid.Equals("0")) { DialogResult result = MessageBox.Show(string.Format(Properties.Resources.msg_multi_print_fail) , string.Format(Properties.Resources.msg_caption_fail), MessageBoxButtons.OK, MessageBoxIcon.Information); } else { DialogResult result = MessageBox.Show(string.Format(Properties.Resources.msg_multi_print_question) , string.Format(Properties.Resources.msg_caption_fail), MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if(result == DialogResult.OK) { this.CurrentPreviewConsent.outputType = "MULTI"; MultiPrintConsentDocument(volist); } } } else { PrintConsentDocument(); } } /// /// 미리보기 데이터를 출력하는 경우 /// public void PrintConsentDocument() { Dictionary> formParamsList = new Dictionary>(); string[] formGuidList = new string[this.CurrentPreviewConsent.prntCnt]; var util = CLIP.eForm.Consent.Common.LoggingUtility.GetLoggingUtility("ERROR", log4net.Core.Level.Error, false); for(int i = 0; i < this.CurrentPreviewConsent.prntCnt; i++) { Dictionary formParams = Common.CreateGlobalParamsDictionary(consentMain.ConsentExecuteInfo["dutinstcd"]); //formGuidList[i] = this.CurrentPreviewConsent.formGuid; SetPatientAndUser(formParams); //formParams[FOSParameter.OCRCode] = this.CurrentPreviewConsent.Ocrcode = GetOcrCode(); if(i == 0) { formParams[FOSParameter.OCRCode] = this.CurrentPreviewConsent.ocrCode = GetOcrCode(); if(!reprintStatus) { int cnt = hospitalWebService.checkOcrDup(consentMain.ConsentExecuteInfo["dutinstcd"], CurrentPreviewConsent.ocrCode); if(cnt > 0) { MessageBox.Show("OCRTAG 중복 발생입니다. 환자를 다시 선택하여 주십시요."); consentMain.ClearPreviewConsent(true); return; } } } else { var ocrStr = consentWebService.getOcrString(this.CurrentPreviewConsent.formCd, consentMain.ConsentExecuteInfo["dutinstcd"]); if(ocrStr == null) { ocrStr = "[환자 보관용]"; } else { ocrStr = (ocrStr.Length < 0) ? "[환자 보관용]" : ocrStr; } //formParams[FOSParameter.OCRCode] = "[환자 보관용]"; formParams[FOSParameter.OCRCode] = ocrStr; } if(string.IsNullOrEmpty(this.CurrentPreviewConsent.ocrCode)) { MessageBox.Show("OCRTAG 생성 오류. 전산실에 문의 하세요."); consentMain.ClearPreviewConsent(true); return; } formParams[FOSParameter.Device] = "P"; formParams[FOSParameter.PrintTime] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); formParams[FOSParameter.PrintIp] = consentMain.ConsentExecuteInfo["printIP"]; if(i == 1) formParams[FOSParameter.PrintComment] = Properties.Resources.msg_print_comment_2; else if(i == 2) formParams[FOSParameter.PrintComment] = Properties.Resources.msg_print_comment_3; // dbs227, KNUH 프린터 출력 시 출력 일 시 제외 formParams[FOSParameter.PatientName] = string.Empty; // parCMDCHD_1PatientNm // 전자동의서 상 이름이 안아올 경우 파라미터 필드를 parCMDCHD_1PatientNmFix 로 변경 // 단 파라미터 필드가 정의되어 있지 않는 경우 파라미터 필드를 추가하여 매핑 formParams[FOSParameter.ExplDrName] = string.Empty; // 설명의 이름 제거 formParams[FOSParameter.ExplDrTelNo] = string.Empty; // 설명의 전화번호 제거 formParams[FOSParameter.ExplDrSign] = string.Empty; // 설명의사 싸인 제거 formParamsList.Add((i + 1).ToString(), formParams); util.WriteDebug(String.Format("{0}, {1}, {2}, {3}, {4}", formParams[FOSParameter.PrintTime], formParams[FOSParameter.OCRCode], formParams[FOSParameter.PatientCode], CurrentTargetPatient.VisitType, CurrentPreviewConsent.consentState ?? "NULL")); } string fosOcdcd = string.Empty; string fos = Common.GetMultiFosString(formGuidList , this.consentMain.PluginExecuteInfo["formServiceUrl"] , null , formParamsList , consentMain.ConsentExecuteInfo["dutinstcd"] , out fosOcdcd); //PC클라이언트에서 프린트 출력을 눌렀을때 출력 데이타 입력 후 출력되게끔 if(this.consentMain.getPrintButton()) { if(!CurrentPreviewConsent.ocrCode.Equals(fosOcdcd)) { MessageBox.Show("OCRTAG 설정 오류 발생. 전산실에 문의 하세요."); return; } this.consentMain.setPageCnt(CurrentPreviewConsent.prntCnt); SaveDataForPrintedConsent(String.Empty); } this.consentMain.PrintConsentDocument(fos); //util.CloseRoller(); // 화면 상에 보이는 데로 출력을 원하면 아래 로직 적용 //this.consentMain.PrintConsentDocument(""); } //private int g_pageCnt = 0; /// /// 사용되지 않음 /// public void PrintDirectConsentDocument() { if(this.currentPreviewConsent == null || this.CurrentTargetPatient == null || this.CurrentEndUser == null) { return; } //미리보기 데이터를 바로 출력하는 경우는 미작성상태인 경우로만 한다. (임시작성 이상의 경우는 바로 출력을 안하도록) if(!this.currentPreviewConsent.consentState.ToUpper().Equals("UNFINISHED")) { return; } int prntCnt = 0; prntCnt = this.CurrentPreviewConsent.prntCnt; int prntMsgCnt = 0; if(!string.IsNullOrEmpty(this.consentMain.ConsentExecuteInfo["printList"])) { if(!consentMain.ConsentExecuteInfo["prntCnt"].Equals("-1")) { int.TryParse(this.consentMain.ConsentExecuteInfo["prntCnt"].ToString(), out prntCnt); prntMsgCnt++; } } Dictionary> formParamsList = new Dictionary>(); string[] formGuidList = new string[prntCnt]; string sOcrCd = string.Empty; for(int i = 0; i < prntCnt; i++) { Dictionary formParams = Common.CreateGlobalParamsDictionary(consentMain.ConsentExecuteInfo["dutinstcd"]); Dictionary changingFormParams = new Dictionary(); SetPatientAndUser(formParams); changingFormParams[FOSParameter.Device] = "P"; changingFormParams[FOSParameter.PrintTime] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); changingFormParams[FOSParameter.PrintIp] = consentMain.ConsentExecuteInfo["printIP"]; if(i == 0) { changingFormParams[FOSParameter.OCRCode] = this.CurrentPreviewConsent.ocrCode = GetOcrCode(); // OCR 코드 sOcrCd = this.CurrentPreviewConsent.ocrCode; int cnt = hospitalWebService.checkOcrDup(consentMain.ConsentExecuteInfo["dutinstcd"], sOcrCd); if(cnt > 0) { MessageBox.Show("OCRTAG 중복 발생입니다. 환자를 다시 선택하여 주십시요."); consentMain.ClearPreviewConsent(true); return; } } else { changingFormParams[FOSParameter.OCRCode] = sOcrCd; //OCR코드 } if(string.IsNullOrEmpty(this.CurrentPreviewConsent.ocrCode)) { MessageBox.Show("OCRTAG 생성 오류. 전산실에 문의 하세요."); consentMain.ClearPreviewConsent(true); return; } if(prntMsgCnt == 1) changingFormParams[FOSParameter.PrintComment] = Properties.Resources.msg_print_comment_2; else if(prntMsgCnt == 2) changingFormParams[FOSParameter.PrintComment] = Properties.Resources.msg_print_comment_3; ChangeGlobalParametersToNew(formParams, changingFormParams); //formGuidList[i] = this.CurrentPreviewConsent.formGuid; formParamsList.Add((i + 1).ToString(), formParams); prntMsgCnt++; } string fos = Common.GetMultiFosString(formGuidList , this.consentMain.PluginExecuteInfo["formServiceUrl"] , null , formParamsList , consentMain.ConsentExecuteInfo["dutinstcd"]); this.consentMain.PrintDirect(fos); } /// /// 단일 서식 다중 환자 출력 /// /// 환자 목록 리스트 private void MultiPrintConsentDocument(List voList) { Dictionary> formParamsList = new Dictionary>(); List formGuids = new List(); int guidCnt = 0; if(voList.Count > 0 && this.CurrentPreviewConsent.prntCnt > 0) { guidCnt = voList.Count * this.CurrentPreviewConsent.prntCnt; } string[] formGuidList = new string[guidCnt]; int prntCnt = 0; string sOcrCd = string.Empty; for(int i = 0; i < voList.Count; i++) { sOcrCd = string.Empty; for(int j = 0; j < this.CurrentPreviewConsent.prntCnt; j++) { PatientVO vo = GetPatientByPatList(voList[i]); Dictionary formParams = Common.CreateGlobalParamsDictionary(consentMain.ConsentExecuteInfo["dutinstcd"]); Dictionary changingFormParams = new Dictionary(); changingFormParams[FOSParameter.ImageUploadPath] = this.consentMain.PluginExecuteInfo["imageUploadPath"] + "/"; changingFormParams[FOSParameter.Device] = "P"; changingFormParams[FOSParameter.PatientCode] = vo.pid; changingFormParams[FOSParameter.PatientSexAge] = vo.sa; changingFormParams[FOSParameter.PatientName] = vo.patientName; changingFormParams[FOSParameter.PatientRRN] = vo.juminNo; changingFormParams[FOSParameter.PatientRRNOrg] = vo.orgJuminNo; changingFormParams[FOSParameter.RoomNo] = vo.ward + "/" + vo.roomCd; changingFormParams[FOSParameter.VisitDate] = SetDateFormatting(vo.inDd); changingFormParams[FOSParameter.DeptName] = vo.deptEngAbbr; changingFormParams[FOSParameter.FormName] = this.CurrentPreviewConsent.formPrintName; changingFormParams[FOSParameter.MainDoctor] = vo.mainDrName; // dbs227 다중 출력 시 환자 이름을 추가하여 준다 changingFormParams[FOSParameter.PatientNameFix] = vo.patientName; // 출력할 경우 설명 의사와 서명 이미지는 공백 처리 //if (consentMain.ConsentExecuteInfo["printYN"].Equals("Y")) { //changingFormParams[FOSParameter.ExplDrName] = string.Empty; //changingFormParams[FOSParameter.ExplDrTelNo] = string.Empty; //changingFormParams[FOSParameter.ExplDrSign] = string.Empty; //changingFormParams[FOSParameter.PatientName] = string.Empty; //changingFormParams[FOSParameter.PatientBirthDay] = string.Empty; //changingFormParams[FOSParameter.PatientTelNo] = string.Empty; // parCMSGBD_PT_tel // 보호자상주확인서 프린터 출력시 제외 항목 //changingGlobalParams[FOSParameter.UserName] = string.Empty; //changingGlobalParams[FOSParameter.SignImage] = string.Empty; } if(j == 0) { HospitalSvcRef.SingleReturnData retData = hospitalWebService.GetOcrTag(this.consentMain.ConsentExecuteInfo["dutinstcd"]); vo.ocrCd = retData.responseData; int cnt = hospitalWebService.checkOcrDup(consentMain.ConsentExecuteInfo["dutinstcd"], vo.ocrCd); if(cnt > 0) { MessageBox.Show("OCRTAG 중복 발생입니다. 환자를 다시 선택하여 주십시요."); consentMain.ClearPreviewConsent(true); return; } changingFormParams[FOSParameter.OCRCode] = vo.ocrCd; //OCR코드 this.CurrentPreviewConsent.multiOcrcode += vo.ocrCd + "^"; this.CurrentPreviewConsent.multiMainDrIdCd += vo.mainDrId + "^"; sOcrCd = vo.ocrCd; } else { changingFormParams[FOSParameter.OCRCode] = sOcrCd; //OCR코드 } if(string.IsNullOrEmpty(sOcrCd)) { MessageBox.Show("OCRTAG 생성 오류. 전산실에 문의 하세요."); return; } if(j == 1) changingFormParams[FOSParameter.PrintComment] = Properties.Resources.msg_print_comment_2; else if(j == 2) changingFormParams[FOSParameter.PrintComment] = Properties.Resources.msg_print_comment_3; changingFormParams[FOSParameter.PrintTime] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); changingFormParams[FOSParameter.PrintIp] = consentMain.ConsentExecuteInfo["printIP"]; ChangeGlobalParametersToNew(formParams, changingFormParams); //formGuidList[prntCnt] = this.CurrentPreviewConsent.formGuid; //formGuids.Add(this.CurrentPreviewConsent.FormGuid); formParamsList.Add((prntCnt + 1).ToString(), formParams); prntCnt++; } } if(this.CurrentPreviewConsent.multiOcrcode.Length > 0) { this.CurrentPreviewConsent.multiOcrcode = this.CurrentPreviewConsent.multiOcrcode.Substring(0, this.CurrentPreviewConsent.multiOcrcode.Length - 1); } if(this.CurrentPreviewConsent.multiMainDrIdCd.Length > 0) { this.CurrentPreviewConsent.multiMainDrIdCd = this.CurrentPreviewConsent.multiMainDrIdCd.Substring(0, this.CurrentPreviewConsent.multiMainDrIdCd.Length - 1); } string fos = Common.GetMultiFosString(formGuidList , this.consentMain.PluginExecuteInfo["formServiceUrl"] , null , formParamsList , consentMain.ConsentExecuteInfo["dutinstcd"]); //PC클라이언트에서 프린트 출력을 눌렀을때 출력 데이타 입력 후 출력되게끔 if(this.consentMain.getPrintButton()) { this.consentMain.setPageCnt(CurrentPreviewConsent.prntCnt); SaveDataForPrintedConsent(String.Empty); } this.consentMain.PrintConsentDocument(fos); } private string SetDateFormatting(string adDate) { if(adDate.Length == 8) return string.Format("{0}/{1}/{2}", adDate.Substring(0, 4), adDate.Substring(4, 2), adDate.Substring(6, 2)); else return adDate; } public override void OnRequiredInputViolation(string value) { MessageBox.Show(this, value + " 항목이 누락되었습니다.", Properties.Resources.msg_caption_warn, MessageBoxButtons.OK, MessageBoxIcon.Warning); //MessageBoxDlg.Show(false, value + " 항목이 누락되었습니다.", Properties.Resources.msg_caption_warn, MessageBoxButtons.OK, MessageBoxIcon.Warning); } /// /// toolStripButtonPen 체크박스 활성화 여부 체크 및 이미지 변경 /// /// if set to true [enabled]. public override void onEnableDrawing(bool enabled) { this.toolStripButtonPen.Checked = enabled; if(this.toolStripButtonPen.Checked) this.toolStripButtonPen.Image = global::CLIP.eForm.Consent.UI.Properties.Resources.newDrawingClick; else this.toolStripButtonPen.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonPen.Image"))); } /// /// 첨지 삭제 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonDeleteAttach_Click(object sender, EventArgs e) { this.consentMain.DeleteAttach(); setViewerPageInit(); } /// /// 첨지 추가 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonInsertAttach_Click(object sender, EventArgs e) { this.consentMain.InsertAttach(); setViewerPageInit(); } /// /// 뷰어 페이지 초기화 /// public override void setViewerPageInit() { this.toolStripLabelTotalPages.Text = this.consentMain.GetTotalPageCount().ToString(); this.toolStripTextBoxPageIndex.Text = this.consentMain.GetCurrentPageIndex().ToString(); } /// /// 환경설정 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonConfig_Click(object sender, EventArgs e) { ShowConfigDialog(); } /// /// 환경설정 다이얼로그를 불러온다 /// private void ShowConfigDialog() { ConfigForm configForm = new ConfigForm(); configForm.ShowDialog(this); } class ZoomRateDropdownItem { private string caption = string.Empty; public string Caption { get { return caption; } set { caption = value; } } private string itemValue = string.Empty; public string ItemValue { get { return itemValue; } set { itemValue = value; } } public ZoomRateDropdownItem() { } public ZoomRateDropdownItem(string caption, string itemValue) { this.caption = caption; this.itemValue = itemValue; } public override string ToString() { return caption; } } /// /// 환경설정 버튼 클릭 이벤트 /// /// The source of the event. /// The instance containing the event data. private void toolStripButtonConfig_Click_1(object sender, EventArgs e) { ShowConfigDialog(); } private void ConsentCommandCtrl_Click(object sender, EventArgs e) { MessageBoxDlg.MessageBoxParent = this; } public void setCurrentPreviewConsentForm(ConsentFormListVO vo, int orderNo, string inputId, string inputNm) { // 현재 preview 할동의서 정보 설정 CurrentPreviewConsent = new PreviewConsent { formId = vo.formId.ToString(), //formGuid = vo.formGuid, formCd = vo.formCd.ToString(), formName = vo.formName, formPrintName = vo.formPrintName, prntCnt = vo.prntCnt, consentMstRid = vo.consentMstRid.ToString(), consentState = vo.consentState, orderNo = orderNo, inputId = inputId, inputNm = inputNm, ReissueConsentMstRid = 0, RewriteConsentMstRid = 0, ordType = CurrentTargetPatient.VisitType, ocrtagPrntyn = vo.ocrTagYN, userDrFlag = vo.userDrFlag, printOnly = vo.prntOnly, opDiagName = vo.opDiagName, drOnly = vo.DrOnly, opName = vo.opName }; Dictionary globalParams = Common.CreateGlobalParamsDictionary(consentMain.ConsentExecuteInfo["dutinstcd"]); List formGuids = new List { /* CurrentPreviewConsent.formGuid */}; SetPatientAndUser(globalParams); globalParams[FOSParameter.OCRCode] = string.Empty; var ocrBuf = GetOcrCode(); if (string.IsNullOrEmpty(ocrBuf)) { MessageBox.Show("OCR 중복입니다. 다시 환자를 선택하여 주세요."); return; } int cnt = hospitalWebService.checkOcrDup(consentMain.ConsentExecuteInfo["dutinstcd"], ocrBuf); if (cnt > 0) { MessageBox.Show("OCRTAG 중복 발생입니다. 환자를 다시 선택하여 주십시요."); consentMain.ClearPreviewConsent(true); return; } globalParams[FOSParameter.OCRCode] = CurrentPreviewConsent.ocrCode = ocrBuf; globalParams[FOSParameter.Device] = "C"; globalParams[FOSParameter.PrintTime] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); globalParams[FOSParameter.SignTime] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); globalParams[FOSParameter.PrintIp] = consentMain.ConsentExecuteInfo["printIP"]; if (string.IsNullOrEmpty(CurrentPreviewConsent.ocrCode)) { MessageBox.Show("OCRTAG 생성 오류. 전산실에 문의 하세요."); consentMain.ClearPreviewConsent(true); return; } string fos = Common.GetFosString(formGuids , consentMain.PluginExecuteInfo["formServiceUrl"] , globalParams , null , consentMain.ConsentExecuteInfo["dutinstcd"]); SetEnableButtonsByCurrentConsent(); consentMain.PreviewConsent(fos); RunConsentDualView(); SetEnableConsentIssueCommands(true); } public void setToolstripEnabled(bool isEnabled) { this.toolStripButtonFirstPage.Enabled = isEnabled;// this.toolStripButtonPrevPage.Enabled = isEnabled; this.toolStripButtonNextPage.Enabled = isEnabled; this.toolStripButtonLastPage.Enabled = isEnabled; this.toolStripTextBoxPageIndex.Enabled = isEnabled;//페이지번호 보여주는부분 total page this.toolStripLabelTotalPages.Enabled = isEnabled;// this.toolStripTextBoxPageIndex.Text = consentMain.GetCurrentPageIndex().ToString(); this.toolStripLabelTotalPages.Text = consentMain.GetTotalPageCount().ToString(); this.toolStripComboBoxZoom.Enabled = isEnabled;//넓이 맞춤 서식 폭 조정 this.toolStripButtonDeleteAllSignData.Enabled = isEnabled;//그림그린거 다없앤거 } /// /// 다중서식 실행시 듀얼뷰어를 실행시켰을 때 버튼 설정 /// public void setMultiParamsDualViewrStripButton() { // 전자동의서 실행 버튼 this.toolStripButtonExecute.Enabled = false; // 출력 버튼 this.toolStripButtonPrint.Enabled = true; if (this.CurrentPreviewConsent != null && this.CurrentPreviewConsent.outputType != null) { if (this.CurrentPreviewConsent.outputType.Equals("ELECTRONIC")) { this.toolStripButtonPrint.Enabled = false; } } // Dual Viewer 닫기 버튼 this.toolStripButtonCloseDualViewer.Visible = true; SetEnableByUserType(); base.SetEnablementExecuteWhenDualViewerActive(true); } } }