#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: ConsentSvc.asmx.cs
//
#endregion
using System;
using System.Collections.Generic;
using System.Web.Services;
using System.Collections;
using IBatisNet.DataMapper;
using CLIP.eForm.Server.Data;
using CLIP.eForm.Consent.Entity;
using CLIP.eForm.Consent.Dac;
using System.IO;
using System.Drawing;
using System.Text;

namespace CLIP.eForm.Consent.WebService {
  /// <summary>
  /// Class description
  /// </summary>
  /// <remarks>
  /// <p>[설계자]</p>
  /// <p>  클립소프트 연구소 홍지철 (jchong@clipsoft.co.kr)</p>
  /// <p>[원본 작성자]</p>
  /// <p>  클립소프트 기술부 이인희</p>
  /// <p>[수정 작성자]</p>
  /// <p>  파티마병원 정보지원과 오재은</p>
  /// <p>----------------------------------------------------------------------------------------</p>
  /// <p>[HISTORY]</p>
  /// <p> 2016-06-15	: 최초작성</p>
  /// <p>----------------------------------------------------------------------------------------</p>
  /// </remarks>

  /// <summary>
  /// HospitalSvc 요약 설명입니다.
  /// </summary>
  [WebService(Namespace = "http://tempuri.org/")]
  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  [System.ComponentModel.ToolboxItem(false)]
  // ASP.NET AJAX를 사용하여 스크립트에서 이 웹 서비스를 호출하려면 다음 줄의 주석 처리를 제거합니다. 
  // [System.Web.Script.Services.ScriptService]
  public class HospitalSvc :System.Web.Services.WebService {
    private IBatisHelper _ibatisHelper;
    private IBatisHelper cendbHelper;

    public HospitalSvc() {
      _ibatisHelper = new IBatisHelper("HospitalSvcOracleMap.config");
      cendbHelper = new IBatisHelper("CenDBOracleMap.config");
    }

    protected override void Dispose(bool disposing) {
      if (IbatisSession != null && IbatisSession.Transaction != null) {
        IbatisSession.CommitTransaction();
        IbatisSession.CloseConnection();
      }
      if (IbatisMapper != null)
        IbatisMapper.CloseConnection();

      if (cendbSession != null && cendbSession.Transaction != null) {
        cendbSession.CommitTransaction();
        cendbSession.CloseConnection();
      }

      if (cendbMapper != null) {
        cendbMapper.CloseConnection();
      }

      base.Dispose(disposing);
    }

    /// <summary>
    /// 현재 연결된 IBatis Connection을 반환
    /// </summary>
    public ISqlMapper IbatisMapper {
      get {
        if (_ibatisHelper == null) {
          return null;
        } else {
          return _ibatisHelper.GetSqlMapper();
        }
      }
    }

    public ISqlMapper cendbMapper {
      get {
        if (cendbHelper == null) {
          return null;
        } else {
          return cendbHelper.GetSqlMapper();
        }
      }
    }

    /// <summary>
    /// 현재 연결된 ISqlMapSession 을 반환
    /// </summary>
    public ISqlMapSession IbatisSession {
      get {
        if (_ibatisHelper == null) {
          return null;
        } else {
          return _ibatisHelper.GetMapSession();
        }
      }
    }

    public ISqlMapSession cendbSession {
      get {
        if (cendbHelper == null) {
          return null;
        } else {
          return cendbHelper.GetMapSession();
        }
      }
    }

    [WebMethod]
    public bool CheckWebService() {
      return true;
    }

    [WebMethod]
    public string checkCendbService() {
      int hashCode = 0;
      if (cendbHelper != null) {
        hashCode = cendbHelper.GetHashCode();
      }
      return String.Format("result is: {0}", hashCode);
    }



    [WebMethod]
    public bool CheckDatabaseConnection() {
      // TODO: 데이터 베이스 커넥션 테스트 호출 필요
      if (IbatisMapper != null) {
        return true;
      }

      return false;
    }

    /// <summary>
    /// 사용자 상세정보
    /// 의사의 경우 엔존번호를 반환한다
    /// </summary>
    /// <param name="userId">사용자 ID</param>
    /// <param name="instCd">근무지기관코드</param>
    /// <param name="deptCd">근무지부서코드</param>
    /// <returns></returns>
    [WebMethod(Description = "사용자 상세정보")]
    public UserVO GetUserInfo(string userId, string instCd, string deptCd) {

      UserVO user = new UserVO();

      try {
        using (UserDac dac = new UserDac()) {

          Hashtable param = new Hashtable {
                        { "userId", userId },
                        { "instCd", instCd },
                        { "deptCd", deptCd ?? "" }
                    };

          user = dac.GetUserInfo(this.IbatisMapper, param);

          if (user == null) {
            user = new UserVO();
            user.userId = "";
            user.userName = "";
            user.userDeptCode = "";
            user.userDeptName = "";
            user.deptEngAbbr = "";
            user.jobKindCd = "";
            user.jobKindNm = "";
            user.instCd = "";
            user.userTelNo = "";
            user.ioFlag = "";
          }

        }

        return user;

      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetUserInfo error: {0}", ex.Message));
        throw ex;
      }
    }

    /// <summary>
    /// 환자 진료일 조회
    /// </summary>
    /// <param name="patientNo">환자번호</param>
    /// <param name="searchClnDate">검색진료일</param>
    /// <param name="searchType">검색조건, (searchType == ">=" 이면 clnDate >= searchClnDate, searchType == "=" 이면   clnDate = searchClnDate) </param>
    /// <param name="orddeptcd">진료부서코드</param>
    /// <param name="dutinstcd">근무지기관코드</param>
    /// <returns></returns>
    [WebMethod(Description = "환자 진료일 조회")]
    public List<ClnDateForDropdownVO> GetTrmtDateList(string patientNo, string searchClnDate, string searchType, string orddeptcd
                                                    , string dutinstcd, string ordType) {
      List<ClnDateForDropdownVO> clnDateList;

      try {
        using (PatientDac dac = new PatientDac()) {
          Hashtable param = new Hashtable {
                        { "instcd", dutinstcd },
                        { "pid", patientNo },
                        { "searchClnDate", searchClnDate },
                        { "searchType", searchType },
                        { "orddeptcd", orddeptcd },
                        { "ordType", ordType}
                    };

          clnDateList = (List<ClnDateForDropdownVO>) dac.GetTrmtDateList(this.IbatisMapper, param);
        }
        return clnDateList;
      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetTrmtDateList error: {0}", ex.Message));
        throw ex;
      }

    }

    /// <summary>
    /// 환자리스트 조회
    /// </summary>
    /// <param name="srchDd">조회일자 ex) 20200101</param>
    /// <param name="ordDeptCd">진료과 코드</param>
    /// <param name="doctorId">의사 아이디</param>
    /// <param name="pid">환자 등록번호</param>
    /// <param name="patientState">동의서 상태 및 환자 상태</param>
    /// <param name="instCd">병원 기관코드</param>
    /// <param name="wardCd">병동코드</param>
    /// <param name="userId">사용자 아이디</param>
    /// <param name="myPatient">입원에서 내환자 검색 조건</param>
    /// <param name="jobKindCd"></param>
    /// <param name="drKind">의사 구분코드 전공의(A), 담당교수(B), 그외 직종(C) 구분코드 </param>
    /// <param name="selectFlag">화면 구분 입원 : I, 외래 : O, 응급 : ER, 수술 : OP, 검색 : S</param>
    /// <param name="srchYN">검색 화면 여부</param>
    /// <returns></returns>
    [WebMethod(Description = "환자리스트 조회")]
    public List<PatListVO> GetPatientList(String srchDd, String ordDeptCd, String doctorId, String pid, String patientState, String instCd,
                                          String wardCd, String userId, String myPatient, String jobKindCd, String drKind, String selectFlag, String srchYN) {

      wardCd = wardCd ?? "";
      userId = userId ?? "";
      myPatient = myPatient ?? "N";
      jobKindCd = jobKindCd ?? "";
      drKind = drKind ?? "";

      selectFlag = selectFlag.ToUpper();
      
      if (selectFlag.Equals("SR")) {
        if (patientState.Equals("A")) {
          selectFlag = "I";
          //patientState = "A";
        } else if (patientState.Equals("0")) {
          selectFlag = "O";
        } else if (patientState.Equals("1")) {
          selectFlag = "E";
          //patientState = "A";
        }

        patientState = "";
      }

      List<PatListVO> result;
      try {
        using (PatListDac dac = new PatListDac()) {
          Hashtable param = new Hashtable();
          param.Add("srchDd", srchDd);
          param.Add("ordDeptCd", ordDeptCd);
          param.Add("doctorId", doctorId);
          param.Add("pid", pid);
          param.Add("patientState", patientState);
          param.Add("instCd", instCd);
          param.Add("selectFlag", selectFlag);
          param.Add("srchYN", srchYN);

          if (selectFlag.Equals("I")) {
            param.Add("wardCd", wardCd);
            param.Add("userId", userId);
            param.Add("myPatient", myPatient);
          }

          if (selectFlag.Equals("I") || selectFlag.Equals("E")) {
            param.Add("jobKindCd", jobKindCd);
            param.Add("drKind", drKind);
          }



          result = (List<PatListVO>) dac.GetPatList(this.IbatisMapper, param);
        }
        return result;
      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetPatientList error: {0}", ex.Message));
        throw ex;
      }
    }

    ///// <summary>
    ///// 입원탭 환자리스트 조회
    ///// </summary>
    ///// <param name="srchdd">조회일자 ex)20160623</param>
    ///// <param name="orddeptcd">진료과 및 집도과 ex) 빈값은 전체</param>
    ///// <param name="doctorid">진료의 또는 주치의 또는 집도의 ex) 빈값은 전체</param>
    ///// <param name="pid">환자등록번호 ex) 빈값은 전체</param>
    ///// <param name="wardcd">병동 코드 ex) 3041400000</param>
    ///// <param name="patstat">환자 상태구분 (외래 : 진료구분, 입원 : 구분, 수술 : 수술상태, 응급 : 재원구분, 환자찾기 : ID인지 이름인지) ex)빈값은 전체</param>
    ///// <param name="jobkindcd"></param>
    ///// <param name="dutinstcd">근무지기관코드</param>
    ///// <param name="userId">로그인 사용자 ID</param>
    ///// <param name="myPatient">내환자 검색 checkbox value, 내환자 검색의 경우 pid 파라미터는 null 로 보내야 한다.ex) Y, N</param>
    //[WebMethod(Description = "입원탭 환자리스트 조회")]
    //public List<PatListVO> GetInPatList(String srchdd, String orddeptcd, String doctorid, String pid, String wardcd, String patstat, String jobkindcd, String dutinstcd, String userId, String myPatient, String drKind) {
    //  List<PatListVO> result;
    //  try {
    //    using (PatListDac dac = new PatListDac()) {
    //      var myPatValue = myPatient ?? "N";
    //      var userIdValue = userId ?? "";

    //      // 내환자 검색일 경우 입력된 환자 번호를 무시하도록 설정  
    //      if (myPatValue == "Y") {
    //        pid = "";
    //      }

    //      //CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetCategoryForDropdown error: {0}", srchdd));

    //      Hashtable param = new Hashtable {
    //                    { "instcd", dutinstcd },
    //                    { "srchdd", srchdd },
    //                    { "orddeptcd", orddeptcd },
    //                    { "wardcd", wardcd },
    //                    { "patstat", patstat },
    //                    { "pid", pid },
    //                    { "doctorid", doctorid },
    //                    { "selectflag", "I" },
    //                    { "userid", userIdValue },
    //                    { "myPatient", myPatValue },
    //                    { "srchYN", "N" },
    //                    { "drKind", drKind }
    //                };
    //      result = (List<PatListVO>) dac.GetPatList(this.IbatisMapper, param);
    //    }

    //    return result;
    //  } catch (Exception ex) {
    //    CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetInPatList error: {0}", ex.Message));
    //    throw ex;
    //  }
    //}

    ///// <summary>
    ///// 외래탭 환자리스트 조회
    ///// </summary>
    ///// <param name="srchdd">조회일자 ex)20160628 orddd</param>
    ///// <param name="orddeptcd">진료과 및 집도과 ex)빈값은 전체, 2010400000</param>
    ///// <param name="doctorid">진료의 또는 주치의 또는 집도의 ex)빈값은 전체, 104796 orddrid</param>
    ///// <param name="pid">환자등록번호 ex)빈값은 전체</param>
    ///// <param name="patstat">환자 상태구분 (외래 : 진료구분, 입원 : 구분, 수술 : 수술상태, 응급 : 재원구분, 환자찾기 : ID인지 이름인지)  빈값은 전체</param>
    ///// <param name="dutinstcd">근무지기관코드</param>
    ///// <returns>외래 환자 리스트</returns>
    //[WebMethod(Description = "외래탭 환자리스트 조회")]
    //public List<PatListVO> GetOutPatList(String srchdd, String orddeptcd, String doctorid, String pid, String patstat, String dutinstcd) {

    //  List<PatListVO> result = null;

    //  try {
    //    using (PatListDac dac = new PatListDac()) {
    //      Hashtable param = new Hashtable {
    //                    { "instcd", dutinstcd },
    //                    { "srchdd", srchdd },
    //                    { "orddeptcd", orddeptcd },
    //                    { "orddrid", doctorid },
    //                    { "pid", pid },
    //                    { "patstat", patstat },
    //                    { "selectflag", "O" },
    //                    { "srchYN", "N" }
    //                };

    //      result = (List<PatListVO>) dac.GetPatList(this.IbatisMapper, param);
    //    }

    //    return result;
    //  } catch (Exception ex) {
    //    CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetOutPatList error: {0}", ex.Message));
    //    throw ex;
    //  }

    //}

    ///// <summary>
    ///// 수술탭 환자리스트 조회
    ///// </summary>
    ///// <param name="srchdd">조회일자  ex)20160623</param>
    ///// <param name="orddeptcd">진료과 및 집도과 ex)빈값은 전체</param>
    ///// <param name="doctorid">진료의 또는 주치의 또는 집도의 ex)빈값은 전체</param>
    ///// <param name="pid">환자등록번호 ex)빈값은 전체</param>
    ///// <param name="patstat">환자 상태구분 (외래 : 진료구분, 입원 : 구분, 수술 : 수술상태, 응급 : 재원구분, 환자찾기 : ID인지 이름인지) ex)A</param>
    ///// <param name="dutinstcd">근무지기관코드</param>
    ///// <returns></returns>
    //[WebMethod(Description = "수술탭 환자리스트 조회")]
    //public List<PatListVO> GetOpPatList(String srchdd, String orddeptcd, String doctorid, String pid, String patstat, String dutinstcd) {
    //  List<PatListVO> result;
    //  try {
    //    using (PatListDac dac = new PatListDac()) {
    //      Hashtable param = new Hashtable {
    //                    { "instcd", dutinstcd },
    //                    { "srchdd", srchdd },
    //                    { "opstatcd", patstat },
    //                    { "orddeptcd", orddeptcd },
    //                    { "orddrid", doctorid },
    //                    { "pid", pid },
    //                    { "selectflag", "OP" },
    //                    { "srchYN", "N" }
    //                };
    //      result = (List<PatListVO>) dac.GetPatList(this.IbatisMapper, param);
    //    }

    //    return result;
    //  } catch (Exception ex) {
    //    CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetOpPatList error: {0}", ex.Message));
    //    throw ex;
    //  }

    //}

    ///// <summary>
    ///// 응급탭 환자 리스트 조회
    ///// </summary>
    ///// <param name="srchdd">조회일자 ex) 20160623</param>
    ///// <param name="orddeptcd">진료과 및 집도과 ex)빈값은 전체</param>
    ///// <param name="doctorid"> 진료의 또는 주치의 또는 집도의 ex)빈값은 전체</param>
    ///// <param name="pid">환자등록번호 ex)빈값은 전체</param>
    ///// <param name="patstat">환자 상태구분 (외래 : 진료구분, 입원 : 구분, 수술 : 수술상태, 응급 : 재원구분, 환자찾기 : ID인지 이름인지) ex)빈값은 전체</param>
    ///// <param name="jobkindcd">직무의 종류와 담당분야가 동일한 직무의군 코드값 아직 정의 되지 않았음. 예)영양직, 의무정보직, 임상병리직'</param>
    ///// <param name="dutinstcd">근무지기관코드</param>
    ///// <returns></returns>
    //[WebMethod(Description = "응급탭 환자 리스트 조회")]
    //public List<PatListVO> GetErPatList(String srchdd, String orddeptcd, String doctorid, String pid, String patstat, String jobkindcd, String dutinstcd, String drKind) {
    //  List<PatListVO> result;
    //  try {
    //    using (PatListDac dac = new PatListDac()) {
    //      CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error("srchdd: " + srchdd);
    //      Hashtable param = new Hashtable {
    //                    { "instcd", dutinstcd },
    //                    { "srchdd", srchdd },
    //                    { "orddeptcd", orddeptcd },
    //                    { "orddrid", doctorid },
    //                    { "patstat", patstat },
    //                    { "pid", pid },
    //                    { "selectflag", "ER" },
    //                    { "srchYN", "N" },
    //                    { "drKind", drKind }
    //                };

    //      var text = "";
    //      IDictionaryEnumerator enum1 = param.GetEnumerator();
    //      while (enum1.MoveNext()) {
    //        text += enum1.Key + ", ";
    //        text += enum1.Value + "\n";
    //      }
    //      CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(text);
    //      result = (List<PatListVO>) dac.GetPatList(this.IbatisMapper, param);
    //    }

    //    return result;
    //  } catch (Exception ex) {
    //    CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetErPatList error: {0}", ex.Message));
    //    throw ex;
    //  }
    //}

    ///// <summary>
    ///// 환자검색 조회 기능
    ///// </summary>
    ///// <param name="srchdd">조회일자 ex)20160623</param>
    ///// <param name="orddeptcd">진료과 및 집도과 ex)빈값은 전체</param>
    ///// <param name="doctorid">진료의 또는 주치의 또는 집도의 ex)빈값은 전체</param>
    ///// <param name="pid">환자등록번호 ex)빈값은 전체</param>
    ///// <param name="ordtype">외래 O / 입원 I / 응급 ER</param>
    ///// <param name="dutinstcd">근무지기관코드</param>
    ///// <param name="userId">로그인 사용자 ID</param>
    ///// <param name="myPatient">내환자 검색 checkbox value, 내환자 검색의 경우 pid 파라미터는 null 로 보내야 한다.ex) Y, N</param>
    ///// <returns></returns>
    //[WebMethod(Description = "환자검색 조회 기능")]
    //public List<PatListVO> GetSrPatList(String srchdd, String orddeptcd, String doctorid, String pid, String ordtype, String dutinstcd, String userId, String myPatient) {
    //  List<PatListVO> result;
    //  try {
    //    using (PatListDac dac = new PatListDac()) {
    //      var myPatValue = myPatient ?? "N";
    //      var userIdValue = userId ?? "";

    //      // 내환자 검색일 경우 입력된 환자 번호를 무시하도록 설정
    //      if (myPatValue == "Y") {
    //        pid = "";
    //      }
    //      Hashtable param = new Hashtable {
    //                    { "instcd", dutinstcd },
    //                    { "srchdd", srchdd },
    //                    { "orddeptcd", orddeptcd },
    //                    { "wardcd", "" },
    //                    { "medispclid", doctorid },
    //                    { "orddrid", doctorid },
    //                    { "pid", pid },
    //                    { "opstatcd", "A" },
    //                    { "selectflag", ordtype },
    //                    { "patstat", "0" },
    //                    { "myPatient", myPatValue },
    //                    { "userId", userIdValue },
    //                    { "srchYN", "Y" }
    //                };

    //      result = (List<PatListVO>) dac.GetPatList(this.IbatisMapper, param);
    //    }

    //    return result;
    //  } catch (Exception ex) {
    //    CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetSrPatList error: {0}", ex.Message));
    //    throw ex;
    //  }

    //}

    /// <summary>
    /// 환자리스트 조회조건 중 진료과 조회
    /// </summary>
    /// <param name="ordType">내원 종류 ( 탭 종류 ) 외래 : O , 입원 : I , 수술 : OP, 응급 : ER, 환자검색 : SR</param>
    /// <param name="instCd">근무지기관코드</param>
    [WebMethod(Description = "환자리스트 조회조건 중 진료과 조회")]
    public List<DeptListVO> GetDeptList(String ordType, String instCd) {
      List<DeptListVO> result;
      try {
        using (PatListDac dac = new PatListDac()) {
          Hashtable param = new Hashtable();
          if (instCd == null) {
            instCd = "031";
          }
          param.Add("instCd", instCd);
          param.Add("ordType", ordType);
          result = (List<DeptListVO>) dac.GetDeptList(this.IbatisMapper, param);
        }
        return result;
      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetDeptList error: {0}", ex.Message));
        throw ex;
      }

    }

    /// <summary>
    /// 환자리스트 조회조건 중 병동 조회
    /// </summary>
    /// <param name="dutinstcd">근무지기관코드</param>
    /// <returns></returns>
    [WebMethod(Description = "환자리스트 조회조건 중 병동 조회")]
    public List<DeptListVO> GetWardList(String instCd) {
      List<DeptListVO> result;
      try {
        using (PatListDac dac = new PatListDac()) {
          Hashtable param = new Hashtable();
          param.Add("instCd", instCd);
          result = (List<DeptListVO>) dac.GetWardList(this.IbatisMapper, param);
        }

        return result;
      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetWardList error: {0}", ex.Message));
        throw ex;
      }

    }

    /*
     * 환자리스트 조회조건 중 의사 조회
     * 
     * srchDd : 조회일자  ex)"20160629"
     * ordDeptCd : 진료과 ex)빈값은 전체조회
     */
    [WebMethod(Description = "환자리스트 조회조건 중 의사 조회")]
    public List<DocListVO> GetDoctorList(String srchDd, String ordDeptCd, String instCd) {
      List<DocListVO> result;
      try {
        using (PatListDac dac = new PatListDac()) {
          Hashtable param = new Hashtable();
          param.Add("instCd", instCd);
          param.Add("srchDd", srchDd);
          param.Add("ordDeptCd", ordDeptCd);
          result = (List<DocListVO>) dac.GetDocList(this.IbatisMapper, param);
        }

        return result;
      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetDoctorList error: {0}", ex.Message));
        throw ex;
      }

    }

    /// <summary>
    /// 환자리스트 조회조건 중 환자 검색 팝업
    /// </summary>
    /// <param name="srchcond">조회 구분( 1: 등록번호, 2: 환자명, 3: 주민번호, 4: 환자명+주민번호)</param>
    /// <param name="pid">환자 등록번호 ex) 2234596</param>
    /// <param name="hngnm">환자이름 ex) 오재은</param>
    /// <param name="rrgstno1">주민번호 앞자리 ex) 891117</param>
    /// <param name="rrgstno2">주민번호 뒷자리 ex) 1682813</param>
    /// <param name="dutinstcd">근무지기관코드</param>
    /// <returns></returns>
    [WebMethod(Description = "환자리스트 조회조건 중 환자 검색 팝업")]
    public List<PatInfoListVO> GetSrchPatInfo(String srchcond, String pid, String hngnm, String rrgstno1, String rrgstno2, String dutinstcd) {
      List<PatInfoListVO> result;

      try {
        using (PatListDac dac = new PatListDac()) {
          Hashtable param = new Hashtable();
          param.Add("instcd", dutinstcd);
          param.Add("srchcond", srchcond);
          param.Add("pid", pid);
          param.Add("hngnm", hngnm);
          param.Add("rrgstno1", rrgstno1);
          param.Add("rrgstno2", rrgstno2);

          result = (List<PatInfoListVO>) dac.GetSrchPatInfo(this.IbatisMapper, param);

        }

        return result;
      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetSrchPatInfo error: {0}", ex.Message));
        throw ex;
      }

    }

    /// <summary>
    /// 환자 선택시 수진일자별 진단 데이터 조회.
    /// 입원일때 한 수진에 수술이 여러개일 경우 집도과로 체크
    /// 외래일때 당일 수진이 여러개일경우 진료과로 체크
    /// </summary>
    /// <param name="pid">환자 등록번호 ex) 2234596 , 2270516</param>
    /// <param name="inDd">외래 : 진료일, 입원: 입원일 ex) 20160205 , 20151201</param>
    /// <param name="ordType">내원 구분 (I: 입원, E: 응급, O: 외래) O , I</param>
    /// <param name="ordDeptCd">내원 구분 (I: 입원, E: 응급, O: 외래) O , I</param>
    /// <param name="cretNo">생성번호</param>
    /// <param name="instCd">근무지기관코드</param>
    /// <param name="opRsrvNo">수술예약번호</param>
    /// <returns></returns>
    [WebMethod(Description = "환자 선택시 수진일자별 진단 데이터 조회")]
    public List<PatientVO> GetPatientInfo(String pid, String inDd, String ordType, String ordDeptCd, String cretNo, String instCd, String opRsrvNo) {
      List<PatientVO> result;

      opRsrvNo = opRsrvNo ?? "";

      try {

        using (PatientDac dac = new PatientDac()) {
          Hashtable param = new Hashtable {
                        { "instCd", instCd },
                        { "inDd", inDd },
                        { "pid", pid },
                        { "ordType", ordType},
                        { "ordDeptCd", ordDeptCd},
                        { "cretNo", cretNo },
                        { "opRsrvNo", opRsrvNo }
                    };

          result = (List<PatientVO>) dac.GetPatientInfo(this.IbatisMapper, param);
        }

        return result;

      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetPatientInfo error: {0}", ex.Message));
        throw ex;
      }
    }

    /// <summary>
    /// 동의서 SET 조회
    /// </summary>
    /// <param name="userId">사용자 아이디 107810</param>
    /// <param name="instCd">근무지기관코드</param>
    [WebMethod(Description = "동의서 SET 조회")]
    public List<ConsentFormListVO> GetConsentSetList(string userId, string instCd) {
      List<ConsentFormListVO> result;

      try {
        using (ConsentDac dac = new ConsentDac()) {
          Hashtable param = new Hashtable();
          param.Add("instCd", instCd);
          param.Add("userId", userId);
          result = (List<ConsentFormListVO>) dac.GetConsentSetList(this.IbatisMapper, param);
        }

        return result;
      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetConsentSetList error: {0}", ex.Message));
        throw ex;
      }
    }

    /// <summary>
    /// 사용자 즐겨찾기 추가
    /// </summary>
    /// <param name="userId">사용자 아이디 107810</param>
    /// <param name="formCd">서식코드 </param>
    /// <param name="instCd">근무지기관코드</param>
    [WebMethod(Description = "사용자 즐겨찾기 추가")]
    public SingleReturnData SetUserFormSetList(String userId, String formCd, String instCd) {
      SingleReturnData result = new SingleReturnData();
      int res = 0;
      try {
        using (UserDac dac = new UserDac()) {
          Hashtable param = new Hashtable();
          param.Add("instCd", instCd);
          param.Add("userId", userId);
          param.Add("formCd", formCd);

          // 교육 DB 일때
          // 교육 DB 에서는 CEN DB 가 없기 때문에 직접 해당 테이블에 값을 저장
          if (cendbHelper.GetSqlMapper().DataSource.Name == "knuhCenDB_ED") {
            res = dac.SetUserFormSet(this.IbatisMapper, param);
          }
          // 운영 DB 일때
          // CEN DB 에 작업하여 반영
          else {
            res = dac.SetUserFormSet(this.cendbMapper, param);
          }
        }

        result.responseData = Convert.ToString(res);

        return result;
      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm SetUserFormSetList error: {0}", ex.Message));
        throw ex;
      }

    }
    /// <summary>
    /// 사용자 즐겨찾기 삭제
    /// </summary>
    /// <param name="userId">사용자 아이디 107810</param>
    /// <param name="formCd">서식코드 </param>
    /// <param name="instCd">근무지기관코드</param>
    [WebMethod(Description = "사용자 즐겨찾기 삭제")]
    public SingleReturnData DelUserFormSetList(String userId, String formCd, String instCd) {
      SingleReturnData result = new SingleReturnData();
      int res = 0;
      try {
        using (UserDac dac = new UserDac()) {
          Hashtable param = new Hashtable();
          param.Add("instCd", instCd);
          param.Add("userId", userId);
          param.Add("formCd", formCd);

          if (cendbHelper.GetSqlMapper().DataSource.Name == "knuhCenDB_ED") {
            res = dac.DelUserFormSet(this.IbatisMapper, param);
          } else {
            res = dac.DelUserFormSet(this.cendbMapper, param);
          }
        }

        result.responseData = Convert.ToString(res);
      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm DelUserFormSetList error: {0}", ex.Message));
        throw ex;
      }

      return result;

    }
    [WebMethod(Description = "OCRTAG 중복 확인")]
    public int checkOcrDup(string instCd, string ocrtag) {
      int cnt = 0;
      using(ConsentDac consentDac = new ConsentDac()) {
        Hashtable param = new Hashtable();
        param.Add("instCd", instCd);
        param.Add("ocrTag", ocrtag);

        cnt = consentDac.checkOcrtagDup(this.IbatisMapper, param);
      }
      return cnt;
    }
    /// <summary>
    /// OCRTAG 할당
    /// </summary>
    /// <param name="instCd">근무지기관코드</param>
    /// <returns></returns>
    [WebMethod(Description = "OCRTAG 할당")]
    public SingleReturnData GetOcrTag(string instCd) {
      SingleReturnData result = new SingleReturnData();
      string resultOcrTag = "";
      try {
        // 먼저 OCRCODE 가 중복되어 있는지 확인한다
        using (PatientDac dac = new PatientDac()) {
          Hashtable param = new Hashtable();
          param.Add("instCd", instCd);
          resultOcrTag = dac.GetOcrTag(this.IbatisMapper, param);
        }
        // OCRTAG 중복 검사
        using (ConsentDac consentDac = new ConsentDac()) {
          Hashtable param = new Hashtable();
          param.Add("instCd", instCd);
          param.Add("ocrTag", resultOcrTag);

          int cnt = consentDac.checkOcrtagDup(this.IbatisMapper, param);
          if (cnt > 0) {
            resultOcrTag = "";
          }
        }

        result.responseData = resultOcrTag;
        return result;
      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetOcrTag error: {0}", ex.Message));
        throw ex;
      }
    }

    /// <summary>
    /// 사용자의 서명이미지 조회
    /// </summary>
    /// <param name="userId">사용자 아이디 103043</param>
    /// <param name="instCd">근무지기관코드</param>
    [WebMethod(Description = "사용자의 서명이미지 조회")]
    public UserSignImageVO GetSignImage(string userId, string instCd) {
      UserSignImageVO vo = new UserSignImageVO();
      try {
        string base64stringimg = string.Empty;
        
        using (UserDac dac = new UserDac()) {
          userId = userId.ToUpper();
          Hashtable param = new Hashtable();
          param.Add("userId", userId);
          param.Add("instCd", instCd);

          IList<UserSignImageVO> vos = dac.GetUserSignImage(this.IbatisMapper, param);
          foreach (UserSignImageVO item in vos) {
            vo = item;
            break;
          }

          if (vos.Count == 0) {
            vo.SignImage = new Byte[0];
          }
        }

        return vo;
      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetSignImage error: {0}", ex.Message));
        throw ex;
      }
    }

    /// <summary>
    /// 주,부 진단명 리스트 조회(진단명 팝업)
    /// </summary>
    /// <param name="pid">등록번호 </param>
    /// <param name="orddd">진료일, 입원일 </param>
    /// <param name="dutinstcd">근무지기관코드</param>
    [WebMethod(Description = "주,부 진단명 리스트 조회(진단명 팝업)")]
    public List<string> GetDiagNameList(String pid, String orddd, String dutinstcd) {
      List<string> result;
      try {
        using (PatientDac dac = new PatientDac()) {
          Hashtable param = new Hashtable();
          if (dutinstcd == null) {
            dutinstcd = "031";
          }
          param.Add("instcd", dutinstcd);
          param.Add("orddd", orddd);
          param.Add("pid", pid);
          result = (List<string>) dac.GetDiagList(this.IbatisMapper, param);
        }

        return result;
      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetDiagNameList error: {0}", ex.Message));
        throw ex;
      }
    }

    public List<string> getOpNameList(String pid, string dutinstcd) {
      List<string> result = null;

      try {
        //using (OperationNameDAC opDac = new OperationNameDAC())
        {
          Hashtable args = new Hashtable();
          //Hashtable param = new Hashtable();
          args.Add("pid", pid);
          args.Add("dutinstcd", dutinstcd);

          //result = (List<string>)opDac.getOpNameList(this.IbatisMapper, args);
        }
        return result;
      } catch (Exception e) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm getOpNameList error: {0}", e.Message));
        throw e;
      }
    }

    /// <summary>
    /// 파일이름 조회
    /// </summary>
    /// <param name=" pid">등록번호 1640515</param>
    /// <param name=" ordtype">내원구분 I</param>
    /// <param name=" orddd">내월일자 20151130</param>
    /// <param name=" dschdd">퇴원일자 99991231</param>
    /// <param name=" cretno">이력번호 1</param>
    /// <param name=" filesize">파일크기 없어도됨</param>
    /// <param name=" formcd">서식코드 1300010289</param>
    /// <param name=" pageno">페이지번호 6</param>
    /// <param name=" ocrtag">OCR코드 2016071989074</param>
    /// <param name=" userid">사용자아이디 105042</param>
    /// <param name = "dutinstcd" >근무지기관코드</ param >
    [WebMethod(Description = "파일이름 조회")]
    public string GetFileName(string pid, string ordtype, string orddd, string dschdd, string cretno, string filesize, string formcd, string pageno, string ocrtag, string userid, string orddeptcd, string dutinstcd) {
      try {
        using (PatientDac dac = new PatientDac()) {
          Hashtable param = new Hashtable();
          param.Add("instcd", dutinstcd);
          param.Add("pid", pid);
          param.Add("ordtype", ordtype);
          param.Add("orddd", orddd);
          param.Add("dschdd", dschdd);
          param.Add("cretno", cretno);
          param.Add("filesize", filesize);
          param.Add("formcd", formcd);
          param.Add("pageno", pageno);
          param.Add("ocrtag", ocrtag);
          param.Add("userid", userid);
          param.Add("orddeptcd", orddeptcd);
          return dac.GetFileName(this.IbatisMapper, param);
          //string tempPath = dac.GetFileName(this.IbatisMapper, param);
          //CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Debug(string.Format("CLIP.eForm GetFileName : {0}", Server.MapPath("./DataTempImage/") + DateTime.Now.Ticks.ToString().Substring(8, 10)));
          //return Server.MapPath("./DataTempImage/") + DateTime.Now.Ticks.ToString().Substring(8, 10);
        }
      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetFileName error: {0}", ex.Message));
        throw ex;
      }

    }
    /// <summary>
    /// setFileName으로 등록된 데이터 삭제하는 로직
    /// </summary>
    /// <param name="pid">등록번호 1640515</param>
    /// <param name="ordtype">내원구분 I</param>
    /// <param name="orddd">내월일자 20151130</param>
    /// <param name="dschdd">퇴원일자 99991231</param>
    /// <param name="cretno">이력번호 1</param>
    /// <param name="formcd">서식코드 1300010289</param>
    /// <param name="ocrtag">OCR코드 2016071989074</param>
    /// <param name="userid">사용자아이디 105042</param>
    /// <param name="username">사용자명 홍길동</param>
    /// <param name="consentmstrid">동의서 생성 아이디 1573</param>
    /// <param name="hostype">병원구분 111</param>
    /// <param name="orddeptcd">진료과 코드 </param>
    /// <param name="dutinstcd">근무지기관코드</param>
    [WebMethod(Description = "setFileName으로 등록된 데이터 삭제하는 함수")]
    public void delEformData(string pid, string ordtype, string orddd, string dschdd, string cretno, string formcd, string ocrtag, string userid, string username, string consentmstrid, string hostype, string orddeptcd, string dutinstcd) {
      try {
        using (PatientDac dac = new PatientDac()) {
          Hashtable param = new Hashtable();
          param.Add("instcd", dutinstcd);
          param.Add("pid", pid);
          param.Add("ordtype", ordtype);
          param.Add("orddd", orddd);
          param.Add("dschdd", dschdd);
          param.Add("cretno", cretno);
          param.Add("formcd", formcd);
          param.Add("ocrtag", ocrtag);
          param.Add("userid", userid);
          param.Add("username", username);
          param.Add("consentmstrid", consentmstrid);
          param.Add("hostype", hostype);
          param.Add("orddeptcd", orddeptcd);

          dac.delEformData(this.IbatisMapper, param);
        }
      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm delEformData error: {0}", ex.Message));
        throw ex;
      }
    }

    /// <summary>
    /// 모바일 Default Tap(외래, 입원..) 설정
    /// </summary>
    /// <param name="userId">사용자 아이디</param>
    /// <param name="status">외래 O 입원 I 응급 E 수술 OP 검색 SR </param>
    /// <param name="instCd">근무지기관코드</param>
    [WebMethod(Description = "모바일 Default Tap(외래, 입원..) 설정")]
    public SingleReturnData UpdateUserSetup(string userId, string status, string instCd) {
      SingleReturnData result = new SingleReturnData();
      int res = 0;
      try {
        using (PatientDac dac = new PatientDac()) {
          Hashtable param = new Hashtable();
          param.Add("userId", userId);
          param.Add("status", status);
          param.Add("instCd", instCd);
          res = dac.UpdateUserSetup(this.IbatisMapper, param);
        }

        result.responseData = Convert.ToString(res);
        return result;
      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm UpdateUserSetup error: {0}", ex.Message));
        throw ex;
      }
    }

    /// <summary>
    /// 모바일 주치의별 미작성 리스트 가져오기
    /// </summary>
    /// <param name="userid">사용자 아이디</param>
    /// <param name="status">동의서 상태(UNFINISHED, TEMP ....)</param>
    /// <param name="fromdd"></param>
    /// <param name="todd"></param>
    /// <param name="dutinstcd">근무지기관코드</param>
    /// <returns></returns>
    [WebMethod(Description = "모바일 주치의별 미작성 리스트 가져오기")]
    public List<UnFinishedListVO> GetUnfinishedListPerDoctor(string userid, string status, string fromdd, string todd, string dutinstcd) {
      try {
        using (ConsentDac dac = new ConsentDac()) {
          Hashtable param = new Hashtable {
                        { "userid", userid },
                        { "status", status },
                        { "fromdd", fromdd },
                        { "todd", todd },
                        { "instcd", dutinstcd }
                    };

          return (List<UnFinishedListVO>) dac.GetUnfinishedListPerDoctor(this.IbatisMapper, param);
        }
      } catch (Exception ex) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm GetUnfinishedListPerDoctor error: {0}", ex.Message));
        throw ex;
      }
    }

    /// <summary>
    /// 모바일 사용자 로그인 API
    /// </summary>
    /// <param name="userid"></param>
    /// <param name="password"></param>
    /// <param name="dutinstcd"></param>
    /// <returns></returns>
    [WebMethod(Description = "모바일 사용자 로그인 API")]
    public List<UserLoginDeptList> doLogin(string userid, string pwd, string dutinstcd, String certSucc) {
      MobileLoginResult result;
      try {
        using (UserDac dac = new UserDac()) {
          Hashtable param = new Hashtable();
          int n;
          if (!int.TryParse(userid, out n)) {
            userid = userid.ToUpper();
          }

          param.Add("userid", userid);
          result = dac.doLogin(this.IbatisMapper, param);

          if (result == null) {
            return null;
          }

          if (certSucc == "false") {
            if (result.pwd != pwd) {
              return null;
            }
          }

          string syscd = (dutinstcd == "031") ? "HIS031" : "HIS032";
          Hashtable param2 = new Hashtable();
          param2.Add("userid", result.userid);
          param2.Add("syscd", syscd);
          return (List<UserLoginDeptList>) dac.getUserdeptList(this.IbatisMapper, param2);

        }
      } catch (Exception e) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(
            string.Format("CLIP.eForm doLogin ERROR : {0}", e.ToString()));
        throw e;
      }
    }

    /// <summary>
    /// 모바일 사용자 정보요청 API
    /// </summary>
    /// <param name="userid"></param>
    /// <param name="dutplceinstcd"></param>
    /// <param name="dutplcecd"></param>
    /// <returns></returns>
    [WebMethod(Description = "모바일 사용자 정보요청 API")]
    public MobileUserInfo GetMobileUserInfo(string userid, string dutplceinstcd, string dutplcecd) {
      MobileUserInfo result = null;
      try {
        using (UserDac dac = new UserDac()) {
          Hashtable param = new Hashtable();
          param.Add("userid", userid);
          param.Add("dutplceinstcd", dutplceinstcd);
          param.Add("dutplcecd", dutplcecd);

          result = dac.getMobileUserInfo(this.IbatisMapper, param);
        }
        return result;
      } catch (Exception e) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(
            string.Format("CLIP.eForm GetMobileUserInfo ERROR : {0}", e.ToString()));
        throw e;
      }
    }

    [WebMethod(Description = "경북대학교병원, 출력 가능한 수진이력을 가진 환자인지 조회")]
    public int checkPrintablePatient(string instcd, string pid, string orddd, string cretno) {
      int count = 0;
      try {
        using (PatientDac dac = new PatientDac()) {
          Hashtable param = new Hashtable
      {
                    {"instcd", instcd},
                    {"pid", pid},
                    {"orddd", orddd },
                    {"cretno", cretno }
                };

          count = dac.checkPrintablePatient(this.IbatisMapper, param);
        }
      } catch (Exception e) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(
            string.Format("CLIP.eForm checkPrintable ERROR : {0}", e.ToString()));
      }

      return count;
    }

    [WebMethod(Description = "펜 설정 검색")]
    public string getPenOptions(string instcd) {
      string otps = string.Empty;
      try {
        using (ConsentDac dac = new ConsentDac()) {
          Hashtable param = new Hashtable();
          param.Add("instcd", instcd);

          otps = dac.getPenOptions(this.IbatisMapper, param);
        }
      } catch (Exception e) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(
            string.Format("CLIP.eForm getPenOptions ERROR : {0}", e.ToString()));
      }
      return otps;
    }

    [WebMethod(Description = "확대 배율 검색")]
    public string getZoomRate(string instcd) {
      string otps = string.Empty;
      try {
        using (ConsentDac dac = new ConsentDac()) {
          Hashtable param = new Hashtable();
          param.Add("instcd", instcd);

          otps = dac.getZoomRate(this.IbatisMapper, param);
        }
      } catch (Exception e) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(
            string.Format("CLIP.eForm getPenOptions ERROR : {0}", e.ToString()));
      }
      return otps;
    }

    [WebMethod(Description = "프린트 제어 메시지 검색")]
    public string getPrintControlMsg(string instcd, string ordtype) {
      string ctrlMsg = string.Empty;

      try {
        using (ConsentDac dac = new ConsentDac()) {
          Hashtable param = new Hashtable();
          param.Add("instcd", instcd);
          param.Add("ordtype", ordtype);

          ctrlMsg = dac.getPrintControlMsg(this.IbatisMapper, param);
        }
      } catch (Exception e) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(
            string.Format("CLIP.eForm getPrintControlMsg ERROR : {0}", e.ToString()));
      }
      return ctrlMsg;
    }
    [WebMethod(Description = "프린트 제어 메시지 검색")]
    public string getPrintOnly(string instcd, string formcd) {
      string ctrlMsg = string.Empty;

      try {
        using (ConsentDac dac = new ConsentDac()) {
          Hashtable param = new Hashtable();
          param.Add("instcd", instcd);
          param.Add("formcd", formcd);

          ctrlMsg = dac.getPrintOnly(this.IbatisMapper, param);
        }
      } catch (Exception e) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(
            string.Format("CLIP.eForm getPrintOnly ERROR : {0}", e.ToString()));
      }
      return ctrlMsg;
    }

    [WebMethod(Description = "멀티출력 가능 서식 카운트")]
    public int getMultiprintable(string instcd, string formcd) {
      int count = 0;

      try {
        using (ConsentDac dac = new ConsentDac()) {
          Hashtable param = new Hashtable();
          param.Add("instcd", instcd);
          param.Add("formcd", formcd);

          count = dac.getMultiprintable(this.IbatisMapper, param);
        }
      } catch (Exception e) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(
            string.Format("CLIP.eForm getMultiprintable ERROR : {0}", e.ToString()));
      }
      return count;
    }

    [WebMethod(Description = "기준자료검색")]
    public int checkHardcd(string instcd, string hardcdno, string trgtcd) {
      int count = 0;

      try {
        using (PatientDac dac = new PatientDac()) {
          Hashtable param = new Hashtable
      {
                    {"instcd", instcd},
                    {"hardcdno", hardcdno},
                    {"trgtcd", trgtcd }
                };

          count = dac.checkHardcd(this.IbatisMapper, param);
        }
      } catch (Exception e) {
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(
            string.Format("CLIP.eForm checkPrintable ERROR : {0}", e.ToString()));
      }

      return count;
    }
    /// <summary>
    /// 세션타임을 가져온다
    /// </summary>
    /// <returns></returns>
    [WebMethod(Description = "모바일 세션 시간을 가져옴")]
    public SingleReturnData GetBaseData(String instCd) {
      SingleReturnData result = new SingleReturnData();
      try {
        using (UserDac dac = new UserDac()) {
          Hashtable param = new Hashtable();
          param.Add("instCd", instCd);
          result.responseData = dac.GetBaseData(this.IbatisMapper, param);
        }
      } catch (Exception e) {
        //result.responseData = "30";
        CLIP.eForm.Server.Diagnostics.LogHelper.LoggingHandler.Error(string.Format("CLIP.eForm checkPrintable ERROR : {0}", e.ToString()));
      }

      return result;
    }


  }
}
