package com.dbs.mplus.controller.mobile;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.dbs.mplus.exception.mobile.ApiCallException;
import com.dbs.mplus.exception.mobile.MobileControllerException;
import com.dbs.mplus.framework.exception.MPlusServiceException;
import com.dbs.mplus.framework.service.menu.ServiceMenu;
import com.dbs.mplus.framework.template.AbstractController;
import com.dbs.mplus.service.MultiPartFileUtil;
import com.dbs.mplus.service.api.MPlusApi;
import com.dbs.mplus.service.api.MPlusApiCallService;

/**
 * 진료
 * 
 * @author seokhwan.chon
 *
 */
@Controller
@RequestMapping("/mobile/medical")
@ServiceMenu(menuId="medical", description="진료")
public class MedicalController extends AbstractController {
	private final Logger logger = LoggerFactory.getLogger(this.getClass());

	@Autowired
	private MPlusApiCallService apiCallService;
	
	/* 진료-서비스  ---------------------------------------------------------------------  */
	/**
	 * 과거 입원 이력 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getInHistoryList.json", method = RequestMethod.POST)
	public Map<String, Object> getInHistoryList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETINHISTORYLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 과거 외래 진료 이력 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getOutHistoryList.json", method = RequestMethod.POST)
	public Map<String, Object> getOutHistoryList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETOUTHISTORYLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 과거 수술 이력 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getOpHistoryList.json", method = RequestMethod.POST)
	public Map<String, Object> getOpHistoryList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETOPHISTORYLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 진료 기록 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getMediRecord.json", method = RequestMethod.POST)
	public Map<String, Object> getMediRecord(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETMEDIRECORD , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 입원일자 이력 리스트 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getInDateList.json", method = RequestMethod.POST)
	public Map<String, Object> getInDateList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETINDATELIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 외래 진료일자 이력 리스트 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getOutDateList.json", method = RequestMethod.POST)
	public Map<String, Object> getOutDateList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETOUTDATELIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 처방 분류 리스트 조회- 입원, 외래
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getPrescriptionClsList.json", method = RequestMethod.POST)
	public Map<String, Object> getPrescriptionClsList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETPRESCRIPTIONCLSLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 처방 상태 리스트 조회- 입원, 외래
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getPrescriptionStatList.json", method = RequestMethod.POST)
	public Map<String, Object> getPrescriptionStatList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETPRESCRIPTIONSTATLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 처방 내역 조회 - 입원, 외래, 협진
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getPrescription.json", method = RequestMethod.POST)
	public Map<String, Object> getPrescription(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETPRESCRIPTION , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 복약정보 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getDrugInfo.json", method = RequestMethod.POST)
	public Map<String, Object> getDrugInfo(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETDRUGINFO , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 복약정보 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getDrugDetail.json", method = RequestMethod.POST)
	public Map<String, Object> getDrugDetail(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETDRUGDETAIL , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 검사결과 접수부서 리스트 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getExamReceiptDeptList.json", method = RequestMethod.POST)
	public Map<String, Object> getExamReceiptDeptList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETEXAMRECEIPTDEPTLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 검사결과 리스트 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getExamList.json", method = RequestMethod.POST)
	public Map<String, Object> getExamList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETEXAMLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 검사결과 상세 조회 - 검체검사
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getExamRsltTy1.json", method = RequestMethod.POST)
	public Map<String, Object> getExamRsltTy1(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETEXAMRSLTTY1 , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 검사결과 상세 조회 - 판독결과
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getExamRsltTy2.json", method = RequestMethod.POST)
	public Map<String, Object> getExamRsltTy2(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETEXAMRSLTTY2 , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 수술 이력 목록 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getOpDetailHistoryList.json", method = RequestMethod.POST)
	public Map<String, Object> getOpDetailHistoryList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETOPDETAILHISTORYLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 수술 상세 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getOperationDetail.json", method = RequestMethod.POST)
	public Map<String, Object> getOperationDetail(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETOPERATIONDETAIL , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 시술 이력 목록 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getTrDetailHistoryList.json", method = RequestMethod.POST)
	public Map<String, Object> getTrDetailHistoryList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETTRDETAILHISTORYLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 시술 상세 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getTreatmentDetail.json", method = RequestMethod.POST)
	public Map<String, Object> getTreatmentDetail(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETTREATMENTDETAIL , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 협진 상세 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getCoDetailHistoryList.json", method = RequestMethod.POST)
	public Map<String, Object> getCoDetailHistoryList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETCODETAILHISTORYLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 협진 상세 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getCollaborationDetail.json", method = RequestMethod.POST)
	public Map<String, Object> getCollaborationDetail(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETCOLLABORATIONDETAIL , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	
	/* 진료-환자검색  ---------------------------------------------------------------------  */
	/**
	 * 사용자의 진료과 리스트 조회 - 입원, 외래, 응급, 수술, 시술, 협진
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getDeptList.json", method = RequestMethod.POST)
	public Map<String, Object> getDeptList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETDEPTLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 진료과의 진료의 리스트 조회 - 입원, 외래, 수술, 시술, 협진
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getDoctorListByDept.json", method = RequestMethod.POST)
	public Map<String, Object> getDoctorListByDept(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETDOCTORLISTBYDEPT , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 사용자의 병동 리스트 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getWardList.json", method = RequestMethod.POST)
	public Map<String, Object> getWardList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETWARDLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 병동의 병실 리스트 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getRoomListByWard.json", method = RequestMethod.POST)
	public Map<String, Object> getRoomListByWard(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETROOMLISTBYWARD , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 입원환자 검색
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getInPatientList.json", method = RequestMethod.POST)
	public Map<String, Object> getInPatientList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETINPATIENTLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 외래 진료 상태 리스트 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getOutTreatStatList.json", method = RequestMethod.POST)
	public Map<String, Object> getOutTreatStatList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETOUTTREATSTATLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 외래환자 검색
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getOutPatientList.json", method = RequestMethod.POST)
	public Map<String, Object> getOutPatientList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETOUTPATIENTLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 응급환자 상태 리스트 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getEmTreatStatList.json", method = RequestMethod.POST)
	public Map<String, Object> getEmTreatStatList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETEMTREATSTATLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 응급환자 검색
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getEmPatientList.json", method = RequestMethod.POST)
	public Map<String, Object> getEmPatientList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETEMPATIENTLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 수술실 리스트 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getOperationCntrList.json", method = RequestMethod.POST)
	public Map<String, Object> getOperationCntrList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETOPERATIONCNTRLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 수술실의 수술방 리스트 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getOperationRoomList.json", method = RequestMethod.POST)
	public Map<String, Object> getOperationRoomList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETOPERATIONROOMLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 수술 진행 상태 리스트 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getOperationStatList.json", method = RequestMethod.POST)
	public Map<String, Object> getOperationStatList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETOPERATIONSTATLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 수술환자 검색
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getOpPatientList.json", method = RequestMethod.POST)
	public Map<String, Object> getOpPatientList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETOPPATIENTLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 시술실 리스트 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getTreatmentCntrList.json", method = RequestMethod.POST)
	public Map<String, Object> getTreatmentCntrList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETTREATMENTCNTRLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 시술 진행 상태 리스트 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getTreatmentStatList.json", method = RequestMethod.POST)
	public Map<String, Object> getTreatmentStatList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETTREATMENTSTATLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 시술환자 검색
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getTrPatientList.json", method = RequestMethod.POST)
	public Map<String, Object> getTrPatientList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETTRPATIENTLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 협진환자 검색
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getCoPatientList.json", method = RequestMethod.POST)
	public Map<String, Object> getCoPatientList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETCOPATIENTLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 바코드환자 검색
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getBarPatientList.json", method = RequestMethod.POST)
	public Map<String, Object> getBarPatientList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETBARPATIENTLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * QR코드 환자 검색
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getQrPatientList.json", method = RequestMethod.POST)
	public Map<String, Object> getQrPatientList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETQRPATIENTLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * NFC 환자 검색
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getNfcPatientList.json", method = RequestMethod.POST)
	public Map<String, Object> getNfcPatientList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETNFCPATIENTLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	
	/* 진료-환자정보  ---------------------------------------------------------------------  */
	/**
	 * 환자정보(or 진료서비스) 접근 권한 체크
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/checkAccessRights.json", method = RequestMethod.POST)
	public Map<String, Object> checkAccessRights(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_CHECKACCESSRIGHTS , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 환자정보 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getPatientInfo.json", method = RequestMethod.POST)
	public Map<String, Object> getPatientInfo(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETPATIENTINFO , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 환자용 notice 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getPatientNotice.json", method = RequestMethod.POST)
	public Map<String, Object> getPatientNotice(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETPATIENTNOTICE , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	////////////
	/**
	 * 진료 기록 목록 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getMediRecordList.json", method = RequestMethod.POST)
	public Map<String, Object> getMediRecordList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETMEDIRECORDLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	/**
	 * 진료기록서식코드조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getMediRecordFormList.json", method = RequestMethod.POST)
	public Map<String, Object> getMediRecordFormList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETMEDIRECORDFORMLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	/**
	 * 진료 기록 상세 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getMediRecordDetail.json", method = RequestMethod.POST)
	public Map<String, Object> getMediRecordDetail(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETMEDIRECORDDETAIL , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	/**
	 * 진료 기록 내용 상세 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getMediRecordContentDetail.json", method = RequestMethod.POST)
	public Map<String, Object> getMediRecordContentDetail(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETMEDIRECORDCONTENTDETAIL , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	/**
	 * 임상관찰 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getVitalList.json", method = RequestMethod.POST)
	public Map<String, Object> getVitalList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETVITALLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	/**
	 * 임상관찰 IO합계  조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getVitalListSum.json", method = RequestMethod.POST)
	public Map<String, Object> getVitalListSum(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETVITALLISTSUM , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 임상관찰 IO합계  조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getVitalListSum2.json", method = RequestMethod.POST)
	public Map<String, Object> getVitalListSum2(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETVITALLISTSUM2 , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 투약실시 내역 조회
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/getMedicationList.json", method = RequestMethod.POST)
	public Map<String, Object> getMedicationList(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_GETMEDICATIONLIST , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
	
	/**
	 * 임상관찰 등록
	 * 
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@RequestMapping(value = "/inputVital.json", method = RequestMethod.POST)
	public Map<String, Object> inputVital(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException {
		// 접근권한 및 파라미터 정리
		try {
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
			
		} catch (MPlusServiceException ex) {
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			return this.apiCallService.call(MPlusApi.MEDICAL_INPUTVITAL , reqMap);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}

			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}

    /**
     * 환자의 마지막 임상관찰 조회
     *
     * @param request
     * @param response
     * @param reqMap
     */
    @RequestMapping(value = "/getVitalByLast.json", method = RequestMethod.POST)
    public Map<String, Object> getVitalByLast(HttpServletRequest request, HttpServletResponse response,
                                              @RequestBody Map<String, Object> reqMap) throws MobileControllerException {
        // 접근권한 및 파라미터 정리
        try {
            reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);

        } catch (MPlusServiceException ex) {
            throw new MobileControllerException(ex.getCode(), ex.getMessage());
        }

        // 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
        reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
        // 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
        reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

        // 실행
        try {
            return this.apiCallService.call(MPlusApi.MEDICAL_GETVITALBYLAST , reqMap);
        } catch (ApiCallException ex) {
            if (this.logger.isDebugEnabled()) {
                this.logger.debug("예외발생", ex);
            }

            throw new MobileControllerException(ex.getCode(), ex.getMessage());
        }
    }
	
	@RequestMapping(value = "/inputWoundImg.json", method = RequestMethod.POST)
	@ResponseBody
	public Map<String, Object> inputWoundImg(HttpServletRequest request, HttpServletResponse response,
			@RequestParam("hospitalCd") String hospitalCd) throws MobileControllerException {
//		// 접근권한 및 파라미터 정리
//		try {
//			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap);
//			
//		} catch (MPlusServiceException ex) {
//			throw new MobileControllerException(ex.getCode(), ex.getMessage());
//		}
		
		// 20180612 shinsunwoo 세션에서 병원구분코드를 가져와서 추가함
//		reqMap.put("hospitalCd", reqMap.get("mpUserHospital"));
//		// 20190125 shinsunwoo user IP를 서비스 호출 파라미터로 전달하여, 서비스 로그에 출력하
//		reqMap.put("userIP", com.dbs.mplus.framework.util.HttpRequestUtil.getClientIpAddr(request));

		// 실행
		try {
			MultiPartFileUtil mpUtil = new MultiPartFileUtil( "", "images");
			return mpUtil.fileUpload(request);
		} catch (ApiCallException ex) {
			if (this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex);
			}
			throw new MobileControllerException(ex.getCode(), ex.getMessage());
		}
	}
}
