2023.01.03(rv501 의사정보)

SaGo_MunGcci·2023년 1월 3일
0

업무 프로젝트

목록 보기
1/29

rv501


// 상단의사 선생님 정보받는 곳 CSDR_LICNS_NO
                    UserInfo = SecurityWrapper.Instance.SecurityService.GetUserInfo(this);
                    if (!dr["csdrLicnsNo"].ToStringDefault().Equals(null) && !dr["csdrLicnsNo"].ToStringDefault().Equals(""))
                    {
                        GetDoctorInFormationFromDoctorLicnsNo cs = new GetDoctorInFormationFromDoctorLicnsNo(dr["csdrLicnsNo"].ToStringDefault());
                        if (cs != null)
                        {
                            String doclicnsNo = cs.GetLicnsNo();       // 의사면허번호
                            String doctorId = cs.GetDoctorId();        // 의사아이디
                            String doctorNm = cs.GetDoctorNm();        // 의사명

                            dr["csdrLicnsNo"] = doctorNm;
                        }
                    }
                    else
                    {
                        dr["csdrLicnsNo"] = "";
                    }

공통(GZCDCTSCD)


 /// <summary>
    /// 의사면허번호를 이용한 의사정보 가져오기
    /// 2023.01.02 박민준
    /// </summary>
    public class GetDoctorInFormationFromDoctorLicnsNo
    {
        ICommunicationService CommService = CommSv.GetCommService();

        string doctorLicns = "";              // 의사면허번호
        string doctorNm = "";                 // 의사명 
        string doctorId = "";                 // 의사아이디
        PreData dtData;
        PreData param = null;
        public GetDoctorInFormationFromDoctorLicnsNo(string quafiLicnsNo)
        {
            PreData prDt = new PreData();           

            prDt["quafiLicnsNo"] = quafiLicnsNo;
            
            AmcData requestData = new AmcData
            {
                preDatas = new PreDatas { { "IPD", prDt } }
            };
            
            AmcData rsAD = CommService.CallService("SHMGZ6310R", requestData, true);
            //ZZ.Comm.CallService(CommService, "SHMGZ6300R", requestData);
            if (rsAD.IsSuccess)
            {
                if (rsAD.preDatas["OPD"] != null)
                {
                    doctorLicns = rsAD.preDatas["OPD"]["quafiLicnsNo"].ToStringDefault();
                    doctorNm = rsAD.preDatas["OPD"]["doctorNm"].ToStringDefault();
                    doctorId = rsAD.preDatas["OPD"]["empno"].ToStringDefault();
                }               
            }            
        }

        public String GetLicnsNo()
        {
            return doctorLicns;
        }

        public String GetDoctorNm()
        {
            return doctorNm;
        }

        public String GetDoctorId()
        {
            return doctorId;
        }
    }

공통은 추가 혹은 수정후 빌드하고 다시 amis종료후 빌드확인후 확인되면 커밋후 젠킨스 빌드

DTO

package kr.amc.amis.hm.gz.cd.entity;

import kr.amc.amil.message.dto.AbstractDTO;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@NoArgsConstructor
public class HeDoctorInfoDTO extends AbstractDTO {
    
    /**
     * 의사면허번호
     */
    private String quafiLicnsNo;
    
    /**
     * 의사명
     */
    private String doctorNm;
    
    /**
     * 의사아이디
     */
    private String empno;
}

Controller

/**
     * 의사면허번호를 이용한 의사정보
     */
    @RequestMapping("SHMGZ6310R")
    @ResponseBody
    public AMCData retrieveDoctorInFormationFromDoctorLicnsNo(@RequestBody AMCData amcData, @PreDataParam(preDataKey = "IPD", elementKey = "quafiLicnsNo") String param) throws Exception {
    	HeDoctorInfoDTO resultDTO  = heSynthCdManageProcService.retrieveDoctorInFormationFromDoctorLicnsNo(param);
        AMCData resData = AMCDataFactory.createForResponse();
        resData.putPreData("OPD", resultDTO);
        return resData;
        
    }

내가 자주 보던 형식은

 @PreDataParam("IPD") HeSynthUfsentCdDTO param

형식이었고

좀더 복잡하다면

@RecordSetParam("IRS") List<SynthDtlCdDTO> list, @PreDataParam("IPD") HeSynthUfsentCdDTO param

이런 형식이었다.

근데

@PreDataParam(preDataKey = "IPD", elementKey = "quafiLicnsNo") String param

이런 형태의 값은 생소해서 저 elementKey = "quafiLicnsNo" 부분에서 원래 내가 참조한 소스인 elementKey = "empNo"라고 되어있어서 계속 null 부적합한 열입니다가 떠서 엄청 해맸다.

잘보면 quafiLicnsNo 는 클라이언트 공통에서 보내는 prDt["quafiLicnsNo"]이거이다.

Service

/**
	 * 의사면허번호를 이용한 의사정보
	 * @param param
	 * @return
	 */
	@Transactional(rollbackFor = Exception.class)
	public HeDoctorInfoDTO  retrieveDoctorInFormationFromDoctorLicnsNo(String param){
		
		HeDoctorInfoDTO result = heSynthUfsentCdMapper.retrieveDoctorInFormationFromDoctorLicnsNo(param);

		MessageUtil.success("HM.success.retrieve");
		return result;
	}

mapper.java

/**
     * 의사면허번호를 이용한 의사정보 2023.01.02 박민준
     * @param param
     * @return
     */
    HeDoctorInfoDTO retrieveDoctorInFormationFromDoctorLicnsNo(String param);  

mapper.xml

  <!-- 의사면허번호를 이용한 의사정보 2023.01.02 박민준-->
    <select id="retrieveDoctorInFormationFromDoctorLicnsNo" parameterType="String" resultType="kr.amc.amis.hm.gz.cd.entity.HeDoctorInfoDTO">
        <![CDATA[
            SELECT /* SQLID=kr.amc.amis.hm.gz.cd.store.mapper.HeSynthUfsentCdMapper.retrieveDoctorInFormationFromDoctorLicnsNo */
                     QUAFI_LICNS_NO               -- 의사면허번호
                   , EMPNO                        -- 의사아이디
                   , KOR_NM AS doctorNm           -- 의사명
            FROM   V_HRPOREMLC, V_ZZANMUSER       
            WHERE QUAFI_LICNS_NO = #{quafiLicnsNo}
            AND  EMPNO = USR_ID
            AND  EMPNO LIKE 'D%'
              
        ]]>
    </select>

참고
사용자 계정을 한글로 만드는 쿼리

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="kr.amc.amis.hm.gr.rv.store.mapper.HeSatinChkReciptMapper">

  <select id="retrieveSatinChkReciptList" parameterType="java.util.HashMap" resultType="kr.amc.amis.hm.gr.rv.entity.HeSatinChkReciptDTO">
     <![CDATA[
        SELECT /* SQLID=kr.amc.amis.hm.gz.cd.store.mapper.HePkgCdMapper.retrieveHePkgCdManageInfoList */
               WIFO.PAT_NM               AS PAT_NM                                                       
              ,WIFO.AGE_YEARS
              ,WIFO.SEX_DIV_NM
              ,WIFO.PAT_BIRTHDT
              ,OTPT.PATNO
              ,OTPT.VIST_SN
              ,OTPT.HE_DT
              ,PCHK.HE_FORM_DIV_CD
              ,PCHK.CUNSL_DT
              ,PCHK.CSDR_LICNS_NO
              ,PCHK.JUDG_DT
              ,PCHK.JUDG_DR_LCNS_NO
              ,PCHK.RSLT_PRNT_DT
              ,PCHK.RSLT_PRNT_EMPNO
              ,(SELECT KOR_NM FROM V_ZZANMUSER WHERE USR_ID = RSLT_PRNT_EMPNO) AS KOR_NM                        
        FROM GMCRMPCHK      PCHK
           , GRRVMOTPT      OTPT
           , V_WPPIMINFO    WIFO
        WHERE PCHK.PATNO    = OTPT.PATNO
          AND PCHK.VIST_SN  = OTPT.VIST_SN
          AND PCHK.HE_DT    = OTPT.HE_DT
          AND PCHK.PATNO    = WIFO.PATNO
   ]]>
   
   <choose>        
           
           <when test ="patno != null and patno != '' and valdYn != null and valdYn != ''">
          <![CDATA[
          
          AND PCHK.PATNO = #{patno}
          AND PCHK.HE_FORM_DIV_CD = #{heFormDivCd}
          AND (PCHK.HE_DT BETWEEN TO_DATE(#{stdt},'YYYYMMDD') AND TO_DATE(#{ltdt},'YYYYMMDD'))
          
          ]]> 
          </when>   
            
         
      <otherwise>     
            
            <if test ="patno != null and patno != ''">
          <![CDATA[
          
           AND PCHK.PATNO = #{patno}                   
           AND (PCHK.HE_DT BETWEEN TO_DATE(#{stdt},'YYYYMMDD') AND TO_DATE(#{ltdt},'YYYYMMDD'))
          
          ]]> 
          </if> 
          
           <if test ="heFormDivCd != null and heFormDivCd != ''">
          <![CDATA[
          
          AND PCHK.HE_FORM_DIV_CD = #{heFormDivCd} 
          AND (PCHK.HE_DT BETWEEN TO_DATE(#{stdt},'YYYYMMDD') AND TO_DATE(#{ltdt},'YYYYMMDD'))
          
          ]]> 
          </if>     
      
            
          AND (PCHK.HE_DT BETWEEN TO_DATE(#{stdt},'YYYYMMDD') AND TO_DATE(#{ltdt},'YYYYMMDD'))          
          
            
      </otherwise>
  </choose>           
      
  </select>
</mapper>

profile
이리저리 생각만 많은 사고뭉치입니다.

0개의 댓글