123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372 |
- package com.lemon.lifecenter.controller;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.json.JSONObject;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.transaction.annotation.Propagation;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.bind.annotation.ModelAttribute;
- 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 org.springframework.web.servlet.ModelAndView;
- import com.lemon.lifecenter.common.LifeCenterConfigVO;
- import com.lemon.lifecenter.common.LifeCenterController;
- import com.lemon.lifecenter.common.LifeCenterFunction;
- import com.lemon.lifecenter.common.LifeCenterPaging;
- import com.lemon.lifecenter.common.LifeCenterSessionController;
- import com.lemon.lifecenter.dto.CenterInfoDTO;
- import com.lemon.lifecenter.dto.PatientDTO;
- import com.lemon.lifecenter.service.CenterService;
- import com.lemon.lifecenter.service.PatientService;
- @Controller
- @RequestMapping("/patient")
- //@DependsOn(value = {"LifeCenterPaging"})
- public class PatientController extends LifeCenterController {
- @Autowired
- private PatientService patientService;
-
- @Autowired
- private CenterService centerService;
-
- @Autowired
- private LifeCenterConfigVO config;
-
- private LifeCenterPaging paging;
-
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
- @RequestMapping("/list")
- // @ModelAttribute("dto") final ASiboDTO dto,
- // @RequestParam( value="k", required=true ) String k
- // @RequestParam( value="type", required=false, defaultValue="" ) String type
- public ModelAndView patientList(
- @RequestParam(value="inputState", required=false, defaultValue="ALL") String inputState,
- @RequestParam(value="patientName", required=false, defaultValue="") String patientName,
- @RequestParam(value="startDate", required=false, defaultValue="") String startDate,
- @RequestParam(value="endDate", required=false, defaultValue="") String endDate,
- @RequestParam(value="page", required=false, defaultValue="1") int page,
- HttpServletRequest request,HttpServletResponse response) {
-
- System.err.println( "page : " + page );
-
- String sesCenterCode = LifeCenterSessionController.getSession( request, "sesCenterCode" );
- String sesGroupIdx = LifeCenterSessionController.getSession( request, "sesGroupIdx" );
-
- // 권한이 SYSTEM일경우
-
- PatientDTO dto = new PatientDTO();
- dto.setCenterCode(Integer.parseInt(sesCenterCode));
- dto.setGroupIdx( Integer.valueOf( sesGroupIdx ) );
- dto.setPatientName(patientName);
- dto.setState(inputState);
- dto.setStartDate(startDate);
- dto.setEndDate(endDate);
- dto.setLimit( ( Integer.valueOf( page ) - 1 ) * config.pageDataSize );
- dto.setLimitMax( config.pageDataSize );
-
- int total = patientService.selectPatientCount(dto);
- List<PatientDTO> result = new ArrayList<PatientDTO>();
- if (total > 0) {
- result = patientService.selectPatietList(dto);
- }
-
- ModelAndView mv = setMV("patient/list");
-
- System.out.println( "PatientController config.pageGroupSize : " + config.pageGroupSize );
-
- String param = "patientName=" + patientName + "&inputState=" + inputState + "&startDate=" + startDate + "&endDate=" + endDate;
- paging = LifeCenterPaging.getInstance();
- paging.paging(config, total, page, param);
-
- // startDate = startDate.equals( "" ) ? LifeCenterFunction.getNow( "yyyy-MM-dd" ) : startDate;
- // endDate = endDate.equals( "" ) ? LifeCenterFunction.getNow( "yyyy-MM-dd" ) : endDate;
-
- mv.addObject("inputState", inputState);
- mv.addObject("patientName", patientName);
- mv.addObject("total", total);
- mv.addObject("item", result);
- mv.addObject("paging", paging);
-
- mv.addObject( "startDate", startDate );
- mv.addObject( "endDate", endDate );
- mv.addObject( "page", page );
- mv.addObject( "pageSize", dto.getLimitMax() );
- mv.addObject( "sesGroupIdx" , sesGroupIdx );
-
- return mv;
- }
- @RequestMapping("/new")
- public ModelAndView patientNew( HttpServletRequest request,HttpServletResponse response ) {
- ModelAndView mv = setMV("patient/new");
- String sesCenterCode = LifeCenterSessionController.getSession( request, "sesCenterCode" );
- String sesId = LifeCenterSessionController.getSession( request, "sesId" );
-
- // 세션의 센터코드 들고와서 치료센터명 조회후 view 전달
- CenterInfoDTO dto = new CenterInfoDTO();
- dto.setCenterCode( Integer.valueOf( sesCenterCode ) );
- dto.setStaffId( sesId );
-
- int centerCount = centerService.selectCenterOneCount( dto );
-
- String centerName = "";
-
- if( centerCount > 0 ) {
- centerName = centerService.selectCenterInfoOne( dto ).getCenterName();
- }
-
- mv.addObject( "centerName", centerName );
- mv.addObject( "centerCount", centerCount );
- mv.addObject( "actionType", "new" );
-
- return mv;
- }
-
- @RequestMapping("/new/insert")
- @Transactional(propagation=Propagation.REQUIRED)
- public String patientNewInsert(
- @ModelAttribute("dto") final PatientDTO dto,
- HttpServletRequest request,HttpServletResponse response ) throws Exception {
- int sesCenterCode = Integer.valueOf( LifeCenterSessionController.getSession( request, "sesCenterCode" ) ) ;
- String sesId = LifeCenterSessionController.getSession( request, "sesId" );
-
- //patientCare Insert
- //System.out.println( "dto.getJumin().substring(2) : " + dto.getJumin().replace( "-" , "" ).substring(2) );
- String jumin = dto.getJumin().replace( "-" , "" );
-
- dto.setId( dto.getWardNumber().trim() + dto.getRoomNumber().trim() );
-
- // 환자 password는 생년월일(yyyymmdd)을 암호화
- // dto.setPw( LifeCenterFunction.aesEncrypt( config.aesKey, config.IV, jumin ) );
- dto.setPw( LifeCenterFunction.sha256Encrypt( jumin ) );
- dto.setJumin( jumin );
- dto.setCenterCode( sesCenterCode );
- dto.setState( "H" ); // H : 입소
- dto.setCreateBy( sesId );
-
- if( dto.getDisisolationDate().equals( "" ) ) {
- dto.setDisisolationDate( null );
- }
-
- patientService.insertPatientCare( dto ); // 환지 기본정보 insert
-
- int patientIdx = dto.getPatientIdx();
- dto.setPatientIdx( patientIdx );
-
- //patientDisease Insert
- dto.setEtcCheck( dto.getEtcCheckDisease() );
- dto.setEtcContent( dto.getEtcContentDisease() );
-
- patientService.insertPatientDisease( dto );
-
- //patientSymptom Insert
- dto.setEtcCheck( dto.getEtcCheckSymptom() );
- dto.setEtcContent( dto.getEtcContentSymptom() );
-
- dto.setBloodPressureLevel( dto.getBloodPressureLevelCon() + "|" + dto.getBloodPressureLevelRel() );
- //
- patientService.insertPatientSymptom( dto );
-
- return "redirect:/patient/info?patientIdx=" + patientIdx;
- }
- @RequestMapping("/info")
- public ModelAndView patientInfo( @ModelAttribute("dto") PatientDTO dto ) {
- ModelAndView mv = setMV("patient/info");
- int patientIdx = dto.getPatientIdx();
- dto = patientService.selectPatientOne(dto);
-
- String jumin = dto.getJumin();
- jumin = jumin.substring(0, 4) + "년 " + jumin.substring(4, 6) + "월 " + jumin.substring(6, 8) + "일";
- dto.setJumin(jumin);
-
- dto.setPatientPhone(LifeCenterFunction.phone(dto.getPatientPhone()));
- dto.setGuardianPhone(LifeCenterFunction.phone(dto.getGuardianPhone()));
-
- String bloodPress = dto.getBloodPressureLevel();
-
- if (!bloodPress.equals("") && !bloodPress.equals("|")) {
- String[] bloodPressureLevel = bloodPress.split("[|]");
- dto.setBloodPressureLevelCon(bloodPressureLevel[0]);
- dto.setBloodPressureLevelRel(bloodPressureLevel[1]);
- }
-
- String strDisease = "";
- String strSymptom = LifeCenterFunction.getSymptom(dto);
- if (dto.getBasalDiseaseYn().equals("Y")) {
- strDisease = LifeCenterFunction.getDisease(dto);
- }
-
-
- mv.addObject("disease", strDisease);
- mv.addObject("symptom", strSymptom);
- mv.addObject("patientIdx", patientIdx);
- mv.addObject("info", dto);
- return mv;
- }
- @RequestMapping("/edit")
- public ModelAndView patientEdit(
- @ModelAttribute("dto") PatientDTO patientDTO,
- HttpServletRequest request,HttpServletResponse response ) {
- String sesCenterCode = LifeCenterSessionController.getSession( request, "sesCenterCode" );
- String sesId = LifeCenterSessionController.getSession( request, "sesId" );
-
- int patientIdx = patientDTO.getPatientIdx();
- patientDTO = patientService.selectPatientOne( patientDTO );
-
-
- // 세션의 센터코드 들고와서 치료센터명 조회후 view 전달
- // 센터가 존재하는지 체크
- CenterInfoDTO dto = new CenterInfoDTO();
- dto.setCenterCode( Integer.valueOf( sesCenterCode ) );
- dto.setStaffId( sesId );
- String centerName = "";
- int centerCount = centerService.selectCenterCount( dto );
-
- if( centerCount > 0 ) {
- centerName = centerService.selectCenterInfoOne( dto ).getCenterName();
- } else {
- LifeCenterFunction.scriptMessage(response, "alertBox({ txt : '문진이 정상적으로 제출되었습니다.', callBack : function(){ history.back(); } });" );
- // return ""; 아직처리안함
- }
-
- String bloodPress = patientDTO.getBloodPressureLevel();
-
- if (!bloodPress.equals("") && !bloodPress.equals("|")) {
- String[] bloodPressureLevel = bloodPress.split("[|]");
- patientDTO.setBloodPressureLevelCon(bloodPressureLevel[0]);
- patientDTO.setBloodPressureLevelRel(bloodPressureLevel[1]);
- }
-
- ModelAndView mv = setMV("patient/edit");
-
- mv.addObject( "centerName", centerName );
- mv.addObject( "centerCount", centerCount );
-
- mv.addObject( "patientIdx", patientIdx );
- mv.addObject( "patientData", patientDTO );
- mv.addObject( "actionType", "edit" );
-
- return mv;
- }
-
- @RequestMapping("/edit/update")
- @Transactional(propagation=Propagation.REQUIRED)
- public String patientEditUpdate(
- @ModelAttribute("dto") final PatientDTO dto,
- HttpServletRequest request,HttpServletResponse response ) throws Exception {
- int sesCenterCode = Integer.valueOf( LifeCenterSessionController.getSession( request, "sesCenterCode" ) ) ;
- String sesId = LifeCenterSessionController.getSession( request, "sesId" );
-
- int patientIdx = dto.getPatientIdx();
- dto.setPatientIdx( patientIdx );
-
- //patientCare Update
- String jumin = dto.getJumin().replace( "-" , "" );
-
- dto.setId( dto.getWardNumber().trim() + dto.getRoomNumber().trim() );
- dto.setPw( LifeCenterFunction.sha256Encrypt( jumin ) );
- dto.setJumin( jumin );
- dto.setCenterCode( sesCenterCode );
- dto.setUpdateBy( sesId );
-
- if( dto.getDisisolationDate().equals( "" ) ) {
- dto.setDisisolationDate( null );
- }
-
- patientService.updatePatientCare( dto ); // 환지 기본정보
-
- //patientDisease Insert
- dto.setEtcCheck( dto.getEtcCheckDisease() );
- dto.setEtcContent( dto.getEtcContentDisease() );
-
- patientService.updatePatientDisease( dto );
-
-
- //patientSymptom Insert
- dto.setEtcCheck( dto.getEtcCheckSymptom() );
- dto.setEtcContent( dto.getEtcContentSymptom() );
-
- dto.setBloodPressureLevel( dto.getBloodPressureLevelCon() + "|" + dto.getBloodPressureLevelRel() );
-
- patientService.updatePatientSymptom( dto );
-
- return "redirect:/patient/info?patientIdx=" + patientIdx;
- }
- @RequestMapping("/privacy")
- public ModelAndView patientPrivacy() {
- ModelAndView mv = setMV("patient/privacy");
- return mv;
- }
-
- @RequestMapping( value="/nonFaceStart", method = RequestMethod.POST )
- @ResponseBody
- public String nonFaceStart(
- @RequestParam( value="pId", required = true ) String pId,
- @RequestParam( value="roomId", required = true ) String roomId,
- @RequestParam( value="pName", required = true ) String pName,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- String salt = LifeCenterFunction.getSalt();
- String timeStamp = LifeCenterFunction.getTimestamp();
- String signature = LifeCenterFunction.getSignature(config.nonFaceApiSecret, salt, timeStamp);
-
- String userId = LifeCenterSessionController.getSession(request, "sesId");
- String userNm = LifeCenterSessionController.getSession(request, "sesName");
-
- HashMap<String, String> data = new HashMap<String, String>();
- data.put("api_key", config.nonFaceApiKey);
- data.put("salt", salt);
- data.put("timestamp", timeStamp);
- data.put("signature", signature);
- data.put("client_id", config.nonFaceClientId);
- data.put("member_id", userId);
-
- String result = LifeCenterFunction.httpUrlConnection(config.nonFaceApiTokenUrl, data);
-
- JSONObject object = new JSONObject(result);
- String message = "";
- String token = "";
- for(String key : object.keySet()) {
- if (key.equals("errorCode")) {
- message = object.getString("message");
- } else if (key.equals("token")){
- token = object.getString("token");
- }
- }
-
- if (!message.equals("")) {
- //error
- }
- String hashData = LifeCenterFunction.getSignature(config.nonFaceApiSecret, config.nonFaceApiKey, roomId + userId); //"1011503101"
-
- object.put("api_key", config.nonFaceApiKey);
- object.put("member_id", userId);
- object.put("token", token);
- object.put("room_id", roomId);
- object.put("member_name", userNm);
- object.put("classify", "d"); // p이면 환자 d이면 의사
- object.put("hashData", hashData);
-
- return object.toString();
- }
-
- }
|