#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:Common.cs // #endregion using System; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using System.Text; namespace CLIP.eForm.Consent.UI { /// /// Global Parameter를 생성하기 위한 클래스 /// /// ///

[설계자]

///

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

///

[원본 작성자]

///

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

///

[수정 작성자]

///

클립소프트 기술부 이인희

///

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

///

[HISTORY]

///

2015-08-06 : 최초작성

///

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

///
public class Common { public static Dictionary CreateGlobalParamsDictionary(string instcd) { Dictionary dic = new Dictionary(); foreach (string s in Enum.GetNames(typeof(FOSParameter))) { dic.Add((FOSParameter)Enum.Parse(typeof(FOSParameter), s), string.Empty); } // 전자동의서 팝업창에서 연결 할 주소 파라미터를 매핑 //dic[FOSParameter.PopupPath] = instcd == "031" ? "https://ema031.knuh.kr:9091/" : "https://ema032.knuh.kr:8091/"; dic[FOSParameter.Instcd] = instcd; return dic; } public static Boolean isCompressed = false; public static byte[] Zip(string str) { var bytes = System.Text.Encoding.UTF8.GetBytes(str); using (var msi = new System.IO.MemoryStream(bytes)) using (var mso = new System.IO.MemoryStream()) { using (var gs = new System.IO.Compression.GZipStream(mso, System.IO.Compression.CompressionMode.Compress)) { CopyTo(msi, gs); } return mso.ToArray(); } } public static string Unzip(byte[] bytes) { using (var msi = new System.IO.MemoryStream(bytes)) using (var mso = new System.IO.MemoryStream()) { using (var gs = new System.IO.Compression.GZipStream(msi, System.IO.Compression.CompressionMode.Decompress)) { CopyTo(gs, mso); } return System.Text.Encoding.UTF8.GetString(mso.ToArray()); } } public static void CopyTo(System.IO.Stream src, System.IO.Stream dest) { byte[] bytes = new byte[4096]; int cnt; while ((cnt = src.Read(bytes, 0, bytes.Length)) != 0) { dest.Write(bytes, 0, cnt); } } public static String createParameters(Dictionary parameterMap) { StringBuilder sb = new StringBuilder(); if (parameterMap == null) { return ""; } foreach (FOSParameter paramKey in parameterMap.Keys) { sb.AppendFormat("", GetFOSName(paramKey, "DCUMC"), parameterMap[paramKey]); } return sb.ToString(); } public static String getNewEptFosString(String formServiceUrl, string baseConsentSvcURL, Dictionary globalParams, List formIds, List consentMstRids) { StringBuilder sb = new StringBuilder(); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(string.Format("", formServiceUrl)); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(""); // 서식 open 시퀀스 var seq = 1; var i = 0; var path = baseConsentSvcURL + "FormSvc.aspx/"; foreach (string formId in formIds) { // 서식을 불러오기 위한 서식 정보 목록 요소 sb.Append(string.Format("
", "noname", seq++, path)); sb.Append(""); sb.Append(createParameters(globalParams)); sb.Append(""); sb.Append(""); sb.Append(""); // 서식을 불러오기 위한 서비스 파리미터 sb.Append(String.Format("", consentMstRids[i++].ToString())); sb.Append(""); sb.Append(""); sb.Append("
"); } sb.Append("
"); sb.Append("
"); return sb.ToString(); } /// /// V2 버전 FOS string 반환 /// /// 전자동의서 서버 URL /// 글로벌 파라미터 목록 /// 리스트 파라미터 목록 /// 생성된 fos string public static String getNewFosString(String formServiceUrl, Dictionary globalParams, Dictionary fosFormParams, List formIds) { StringBuilder sb = new StringBuilder(); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(string.Format("", formServiceUrl)); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(createParameters(globalParams)); sb.Append(""); sb.Append(""); sb.Append(""); // 서식 open 시퀀스 var seq = 1; foreach (string formId in formIds) { // 서식을 불러오기 위한 서식 정보 목록 요소 sb.Append(string.Format("
", "noname", seq++, formServiceUrl)); // 서식을 불러오기 위한 서비스 파리미터 상위 요소(서비스 호출시 사용) sb.Append(""); sb.Append(""); sb.Append(""); // 서식에 사용되는 파라미터 목록 요소 sb.Append(""); sb.Append(createParameters(globalParams)); sb.Append(""); // 서식에 필요한 첨부 파일 목록 요소 //sb.Append(""); // //음성 녹음 파일 목록 요소 // // 음성 녹음 파일 // // // 펜 정보를 불러올 수 있는 정보 목록 요소 // // 본문(기존 디자인 되어있는 여역)의 펜 정보를 불러올 수 있는 URL 정보를 가지고 있는 요소 // // 본문(기존 디자인 되어있는 영역)의 펜 정보를 조회하기 위한 파라미터 묶음 // // 본문(기존 디자인 되어있는 영역)의 펜 정보를 조회하기 위한 파라미터 // // // 서식에 추가할 페이지 템플릿 리스트 // // 서식에 추가할 페이지 템플릿 정보 // // 페이지 템플릿 추가 시 사용되는 파라미터 묶음 // // 페이지 템플릿 추가 시 사용되는 파라미터 //sb.Append(""); // 서식에서 불로올 데이터 정보 //sb.Append(""); //sb.Append(""); // 서식에 반영되는 페이지 템플릿 목록을 조회하기 위한 상위 요소 //sb.Append(""); // //서식에 반영되는 페이지 템플릿 목록을 조회하기 위한 파라미터 묶음 // // 서식에 반영되는 페이지 템플릿 목록을 조회하기 위한 파라미터 //sb.Append(""); sb.Append("
"); } sb.Append("
"); sb.Append("
"); return sb.ToString(); } /// /// param, guid값을 넘겨받아 그를 포함하는 fos를 리턴한다. /// /// /// /// public static string GetFosString(List guids, string formServiceUrl, Dictionary fosGlobalParams, Dictionary> fosFormParams, string pInstCd) { StringBuilder fos = new StringBuilder(); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append(GetParamsString(fosGlobalParams, pInstCd)); fos.Append(string.Format("", formServiceUrl)); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append("GET_LIST"); fos.Append(""); fos.Append("defaultadapter"); fos.Append(""); fos.Append("]]>"); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append(""); int openSeq = 1; foreach (string guid in guids) { fos.Append(string.Format("
", openSeq, formServiceUrl)); fos.Append(""); if (fosFormParams != null) { if (fosFormParams.ContainsKey(guid)) { Dictionary fosFormParamsByGuid = fosFormParams[guid]; foreach (FOSParameter paramKey in fosFormParamsByGuid.Keys) { fos.Append(string.Format("", GetFOSName(paramKey, pInstCd), fosFormParamsByGuid[paramKey])); } } } fos.Append(""); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append("GET"); fos.Append(""); fos.Append("defaultadapter"); fos.Append("guid"); fos.Append(string.Format("{0}", guid)); fos.Append("-1"); fos.Append(""); fos.Append("]]>"); fos.Append(""); fos.Append("
"); openSeq++; } fos.Append("
"); fos.Append("
"); return fos.ToString(); } /// /// param, guid값을 넘겨받아 그를 포함하는 fos를 리턴한다. /// /// /// /// public static string GetMultiFosString(string[] guids, string formServiceUrl, Dictionary fosGlobalParams, Dictionary> fosFormParams, string pInstCd) { StringBuilder fos = new StringBuilder(); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append(""); if (fosGlobalParams != null) { fos.Append(GetParamsString(fosGlobalParams, pInstCd)); } fos.Append(""); fos.Append(string.Format("", formServiceUrl)); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append("GET_LIST"); fos.Append(""); fos.Append("defaultadapter"); fos.Append(""); fos.Append("]]>"); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append(""); int openSeq = 1; foreach (string guid in guids) { fos.Append(string.Format("
", openSeq, formServiceUrl)); fos.Append(""); if (fosFormParams != null) { if (fosFormParams.ContainsKey(openSeq.ToString())) { Dictionary fosFormParamsByGuid = fosFormParams[openSeq.ToString()]; foreach (FOSParameter paramKey in fosFormParamsByGuid.Keys) { fos.Append(string.Format("", GetFOSName(paramKey, pInstCd), fosFormParamsByGuid[paramKey])); } } } fos.Append(""); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append("GET"); fos.Append(""); fos.Append("defaultadapter"); fos.Append("guid"); fos.Append(string.Format("{0}", guid)); fos.Append("-1"); fos.Append(""); fos.Append("]]>"); fos.Append(""); fos.Append("
"); openSeq++; } fos.Append("
"); fos.Append("
"); return fos.ToString(); } public static string GetMultiFosString(string[] guids, string formServiceUrl, Dictionary fosGlobalParams, Dictionary> fosFormParams, string pInstCd, out string ocrtag) { ocrtag = string.Empty; StringBuilder fos = new StringBuilder(); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append(""); if (fosGlobalParams != null) { fos.Append(GetParamsString(fosGlobalParams, pInstCd)); } fos.Append(""); fos.Append(string.Format("", formServiceUrl)); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append("GET_LIST"); fos.Append(""); fos.Append("defaultadapter"); fos.Append(""); fos.Append("]]>"); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append(""); int openSeq = 1; foreach (string guid in guids) { fos.Append(string.Format("
", openSeq, formServiceUrl)); fos.Append(""); if (fosFormParams != null) { if (fosFormParams.ContainsKey(openSeq.ToString())) { Dictionary fosFormParamsByGuid = fosFormParams[openSeq.ToString()]; foreach (FOSParameter paramKey in fosFormParamsByGuid.Keys) { fos.Append(string.Format("", GetFOSName(paramKey, pInstCd), fosFormParamsByGuid[paramKey])); if (string.IsNullOrEmpty(ocrtag) && GetFOSName(paramKey, pInstCd).Equals("parCMSGBD_ocr_cd")) { ocrtag = fosFormParamsByGuid[paramKey]; } } } } fos.Append(""); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append("GET"); fos.Append(""); fos.Append("defaultadapter"); fos.Append("guid"); fos.Append(string.Format("{0}", guid)); fos.Append("-1"); fos.Append(""); fos.Append("]]>"); fos.Append(""); fos.Append("
"); openSeq++; } fos.Append("
"); fos.Append("
"); return fos.ToString(); } /// /// param, guid값을 넘겨받아 그를 포함하는 fos를 리턴한다. /// /// /// /// public static string GetFosStringForEpt(Dictionary actionParams, string formServiceUrl, Dictionary fosGlobalParams, string pInstCd) { bool isCompress = Common.isCompressed; StringBuilder fos = new StringBuilder(); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append(GetParamsString(fosGlobalParams, pInstCd)); fos.Append(string.Format("", formServiceUrl)); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append("GET_LIST"); fos.Append(""); fos.Append("defaultadapter"); fos.Append(""); fos.Append("]]>"); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append(string.Format("
", formServiceUrl)); //fos.Append(string.Format("", formServiceUrl, (isCompress) ? "compression =\"true\"" : "")); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append(""); fos.Append("GET_DATA"); fos.Append(""); fos.Append("defaultadapter"); foreach (string paramKey in actionParams.Keys) { fos.Append(string.Format("{1}", paramKey, actionParams[paramKey])); } fos.Append(""); fos.Append("]]>"); fos.Append(""); fos.Append(""); fos.Append("
"); fos.Append("
"); return fos.ToString(); } public static string GetAllFOSParamString(string pInstCd) { Dictionary dic = new Dictionary(); StringBuilder _sb = new StringBuilder(); foreach (string s in Enum.GetNames(typeof(FOSParameter))) { _sb.AppendFormat("{0}:{1}{2}", GetFOSName((FOSParameter)Enum.Parse(typeof(FOSParameter), s), "org") , GetFOSName((FOSParameter)Enum.Parse(typeof(FOSParameter), s), pInstCd) , ";"); } return _sb.ToString(); } private static string GetParamsString(Dictionary fosParams, string pInstCd) { StringBuilder parametersOfFos = new StringBuilder(); parametersOfFos.Append(""); foreach (FOSParameter paramKey in fosParams.Keys) { parametersOfFos.AppendFormat("", GetFOSName(paramKey, pInstCd), fosParams[paramKey]); } parametersOfFos.Append(""); return parametersOfFos.ToString(); } private static string GetFOSName(FOSParameter pName, string pInstCd) { string _name = ""; switch (pInstCd) { case "031": _name = m_FOSParamArr_031[Array.IndexOf(Enum.GetValues(pName.GetType()), pName)]; break; case "032": _name = m_FOSParamArr_032[Array.IndexOf(Enum.GetValues(pName.GetType()), pName)]; break; default: _name = m_FOSParamArr_org[Array.IndexOf(Enum.GetValues(pName.GetType()), pName)]; break; } return _name; } private static string[] m_FOSParamArr_031 = { "parCMDCFT_device" , "parCMDCFT_1PrintIP" , "parCMDCHD_1PatientNo" , "parCMDCHD_1SexAge" , "parCMDCHD_1PatientNm" , "parCMDCHD_1SocialSecuNo" , "parNUR_Fast_HospitalroomNo" , "parCMDCHD_1VisitDt" , "parCMDCHD_1DepartmentNm" , "parCMDCFT_1PrintNm" , "parCMDCBD_PopupV1_SurgeryDepartment" , "parCMDCBD_PopupV1_SurgeryDoctor" , "parCMDCBD_PopupV1_DxNm" , "parCMDCBD_DiseaseBox_bp" , "parCMDCBD_DiseaseBox_dm" , "parCMDCBD_DiseaseBox_1CardioVascular" , "parCMDCBD_DiseaseBox_3Metabolic" , "parCMDCBD_DiseaseBox_2Respiratory" , "parCMDCBD_DiseaseBox_9History1" , "parCMDCBD_DiseaseBox_4UnusualConstitution2" , "parCMDCBD_DiseaseBox_6Medicine" , "parCMDCBD_DiseaseBox_8HabitSmoking" , "parCMDCBD_DiseaseBox_4UnusualConstitution1" , "parCMDCBD_DiseaseBox_9History2" , "parCMDCBD_DiseaseBox_7Airway" , "parCMDCBD_DiseaseBox_5Blood" , "parCMDCBD_status_etc" , "parCMDCBD_signdate" , "parCMDCBD_signtime" , "parCMDCFT_1PrintDt" , "parCMDCBD_Doctor_Doctor1Nm" , "parCMSGBD_ocr_cd" , "parCMSGBD_INPUTNm" , "parCMSGBD_INPUTSignature" , "parCMDCHD_1DepartmentCd" , "UrlParam" , "parCMSGBD_PT_address" , "parCMSGBD_PT_tel" , "parCMSGBD_Insukind" , "parCMSGBD_PT_birthday" , "IO_print_comment" , "parCMDCBD_PopupV1_OPNm" , "parCMSGBD_INPUTTelNo" , "parDEFAULT_DUTINSTCD" , "parDEFAULT_POPUP_PATH" , "parCMDCBD_PopupV1_SurgeryCommonDepartment" , "parCMDCBD_Anst1DrNm" , "parCMDCBD_Anst1DeptNm" , "parCMDCBD_Anst1CommonDeptNm" , "parCMDCBD_Anst2DrNm" , "parCMDCBD_Anst2DeptNm" , "parCMDCBD_Anst2CommonDeptNm" , "parCMDCBD_Anst3DrNm" , "parCMDCBD_Anst3DeptNm" , "parCMDCBD_Anst3CommonDeptNm" , "parCMSGBD_INPUTDeptcd" , "parCMSGBD_Cretno" , "parCMSGBD_ExplDrNm" , "parCMSGBD_ExplDrSignature" , "parCMSGBD_ExplDrTelNo" , "parCMDCBD_OpRsrvNo" , "parCMDCHD_1PatientNmFix" , "parCMSGBD_PT_birthdayFix" , "parCMSGBD_PT_telFix" , "parCMDCBD_SpDrYN" , "parCMDCBD_ContStartDate" , "parCMDCBD_ContEndDate" , "parCMDCBD_RoomCapa" , "parCMDCBD_ContTelNo" , "parCMDCBD_ContStaff1Name" , "parCMDCBD_ContStaff2Name" , "parCMDCBD_ContStaff3Name" // 경대병원 태그 추가 , "tag1" , "tag2" , "tag3" , "tag4" , "tag5" , "tag6" , "tag7" , "tag8" , "tag9" , "tag10" , "parCMDCBD_CardNo" , "parCMSGBD_ExplDrNm_P" , "parCMSGBD_ExplDrTelNo_P" , "parCMSGBD_ExplDrSignature_P" , "parCMDCHD_1SocialSecuNo_org" }; private static string[] m_FOSParamArr_032 = { "parCMDCFT_device" , "parCMDCFT_1PrintIP" , "parCMDCHD_1PatientNo" , "parCMDCHD_1SexAge" , "parCMDCHD_1PatientNm" , "parCMDCHD_1SocialSecuNo" , "parNUR_Fast_HospitalroomNo" , "parCMDCHD_1VisitDt" , "parCMDCHD_1DepartmentNm" , "parCMDCFT_1PrintNm" , "parCMDCBD_PopupV1_SurgeryDepartment" , "parCMDCBD_PopupV1_SurgeryDoctor" , "parCMDCBD_PopupV1_DxNm" , "parCMDCBD_DiseaseBox_bp" , "parCMDCBD_DiseaseBox_dm" , "parCMDCBD_DiseaseBox_1CardioVascular" , "parCMDCBD_DiseaseBox_3Metabolic" , "parCMDCBD_DiseaseBox_2Respiratory" , "parCMDCBD_DiseaseBox_9History1" , "parCMDCBD_DiseaseBox_4UnusualConstitution2" , "parCMDCBD_DiseaseBox_6Medicine" , "parCMDCBD_DiseaseBox_8HabitSmoking" , "parCMDCBD_DiseaseBox_4UnusualConstitution1" , "parCMDCBD_DiseaseBox_9History2" , "parCMDCBD_DiseaseBox_7Airway" , "parCMDCBD_DiseaseBox_5Blood" , "parCMDCBD_status_etc" , "parCMDCBD_signdate" , "parCMDCBD_signtime" , "parCMDCFT_1PrintDt" , "parCMDCBD_Doctor_Doctor1Nm" , "parCMSGBD_ocr_cd" , "parCMSGBD_INPUTNm" , "parCMSGBD_INPUTSignature" , "parCMDCHD_1DepartmentCd" , "UrlParam" , "parCMSGBD_PT_address" , "parCMSGBD_PT_tel" , "parCMSGBD_Insukind" , "parCMSGBD_PT_birthday" , "IO_print_comment" , "parCMDCBD_PopupV1_OPNm" , "parCMSGBD_INPUTTelNo" , "parDEFAULT_DUTINSTCD" , "parDEFAULT_POPUP_PATH" , "parCMDCBD_PopupV1_SurgeryCommonDepartment" , "parCMDCBD_Anst1DrNm" , "parCMDCBD_Anst1DeptNm" , "parCMDCBD_Anst1CommonDeptNm" , "parCMDCBD_Anst2DrNm" , "parCMDCBD_Anst2DeptNm" , "parCMDCBD_Anst2CommonDeptNm" , "parCMDCBD_Anst3DrNm" , "parCMDCBD_Anst3DeptNm" , "parCMDCBD_Anst3CommonDeptNm" , "parCMSGBD_INPUTDeptcd" , "parCMSGBD_Cretno" , "parCMSGBD_ExplDrNm" , "parCMSGBD_ExplDrSignature" , "parCMSGBD_ExplDrTelNo" , "parCMDCBD_OpRsrvNo" , "parCMDCHD_1PatientNmFix" , "parCMSGBD_PT_birthdayFix" , "parCMSGBD_PT_telFix" , "parCMDCBD_SpDrYN" , "parCMDCBD_ContStartDate" , "parCMDCBD_ContEndDate" , "parCMDCBD_RoomCapa" , "parCMDCBD_ContTelNo" , "parCMDCBD_ContStaff1Name" , "parCMDCBD_ContStaff2Name" , "parCMDCBD_ContStaff3Name" // 경대병원 태그 추가 , "tag1" , "tag2" , "tag3" , "tag4" , "tag5" , "tag6" , "tag7" , "tag8" , "tag9" , "tag10" , "parCMDCBD_CardNo" , "parCMSGBD_ExplDrNm_P" , "parCMSGBD_ExplDrTelNo_P" , "parCMSGBD_ExplDrSignature_P" , "parCMDCHD_1SocialSecuNo_org" }; private static string[] m_FOSParamArr_org = { "IO_device" //동작코드(T: 임시 저장, C: 인증 저장, P: 출력, CP: 삭제) , "PrintIp" , "IO_Pt_ID" , "IO_sex_age_y_m" , "IO_Pt_name" , "IO_JuminNo" , "IO_roomNo" , "IO_ADdate" , "IO_Dept" , "IO_formname" , "IO_OPdept" , "IO_Opdr" , "IO_Dx" , "IO_bp" , "IO_dm" , "IO_heart" , "IO_kidney" , "IO_respiration" , "IO_hx" , "IO_allergy" , "IO_drug" , "IO_smoking" , "IO_idio" , "IO_nacrotics" , "IO_airway" , "IO_hemorrhage" , "IO_status_etc" , "IO_signdate" , "IO_signtime" , "IO_printtime" , "IO_maindr" , "IO_ocr_cd" , "IO_INPUTNM" , "IO_SIGNIMG" , "IO_DeptCd" , "UrlParam" , "IO_Pt_address" , "IO_Pt_tel" , "IO_Insukind" , "IO_PT_birthday" , "IO_print_comment" , "OperationName" , "UserTelNo" , "Instcd" , "PopupPath" , "OpCommDeptName" , "AnstDrName" , "AnstDeptName1" , "AnstCommDeptName1" , "AnstDrName2" , "AnstDeptName2" , "AnstCommDeptName2" , "AnstDrName3" , "AnstDeptName3" , "AnstCommDeptName3" , "UserDeptCd" , "CretNo" , "parCMSGBD_ExplDrNm" , "parCMSGBD_ExplDrSignature" , "parCMSGBD_ExplDrTelNo" , "parCMDCBD_OpRsrvNo" , "PatientNameFix" , "PatientBirthDayFix" , "PatientTelNoFix" , "SpecDoctorYN" , "ContStartDate" , "ContEndDate" , "RoomCapa" , "ContTelNo" , "ContStaff1Name" , "ContStaff2Name" , "ContStaff3Name" // 경대병원 태그 추가 , "tag1" , "tag2" , "tag3" , "tag4" , "tag5" , "tag6" , "tag7" , "tag8" , "tag9" , "tag10" , "CardNo" , "parCMSGBD_ExplDrNm_P" , "parCMSGBD_ExplDrTelNo_P" , "parCMSGBD_ExplDrSignature_P" , "parCMDCHD_1SocialSecuNo_org" }; } public enum FOSParameter { Device, PrintIp, PatientCode, PatientSexAge, PatientName, PatientRRN, RoomNo, VisitDate, DeptName, FormName, OpDeptName, OpDoctorName, DiagName, BP, DM, Heart, Kidney, Respiration, MedicalHistory, Allergy, Drug, Smoking, Idiosyncrasy, Nacrotics, Airway, Hemorrhage, EtcStatus, SignDate, SignTime, PrintTime, MainDoctor, OCRCode, UserName, SignImage, DeptCode, ImageUploadPath, PatientAddress, PatientTelNo, Insukind, PatientBirthDay, PrintComment, OperationName, UserTelNo, Instcd, PopupPath, OpCommDeptName, AnstDrName1, AnstDeptName1, AnstCommDeptName1, AnstDrName2, AnstDeptName2, AnstCommDeptName2, AnstDrName3, AnstDeptName3, AnstCommDeptName3, UserDeptCd, CretNo, ExplDrName, // 설명의사 이름 ExplDrSign, // 설명의사 사인 이미지 ExplDrTelNo, // 설명의사 전화번호 OpRsrvNo, // 수술 예약번호 PatientNameFix, PatientBirthDayFix, PatientTelNoFix, SpecDoctorYN, ContStartDate, ContEndDate, RoomCapa, ContTelNo, ContStaff1Name, ContStaff2Name, ContStaff3Name, // 경대병원 태그 추가 tag1, tag2, tag3, tag4, tag5, tag6, tag7, tag8, tag9, tag10, CardNo, ExplDrName_P, ExplDrTelNo_p, ExplDrSign_p, PatientRRNOrg } }