%@ page contentType="text/html; charset=utf-8" %> <%@ page import="java.net.URLEncoder,java.util.ArrayList" %> <%@ page import="com.merits.util.AccessLogUtil" %> <%@ page import="threadmon.data.UketsukeInfoDataController,threadmon.data.UketsukeInfoData" %> <%@ page import="threadmon.data.OrderInfoDataController" %> <%@ page import="threadmon.data.WaitCountDataController" %> <%@ page import="threadmon.data.MiraisUketsukeDataController,threadmon.data.MiraisUketsukeData" %> <%@ page import="threadmon.data.MiraisEchoDataController" %> <%@ page import="threadmon.data.MiraisSaiketsuDataController" %> <%@ page import="threadmon.util.DbUtil" %> <%@ include file="jsp_pgnm.jsp" %> <% /*--------------------------------------------------------------*/ /* エラーメッセージ */ /*--------------------------------------------------------------*/ request.setCharacterEncoding("utf-8"); //パラメータ取得 String pid = request.getParameter(PID); //患者ID String uno = request.getParameter(UNO); //受付No String defParam = "?"+PID+"="+pid+"&"+UNO+"="+uno; UketsukeInfoDataController uketukeInfoDataController = new UketsukeInfoDataController(); WaitCountDataController waitCountDataController = new WaitCountDataController(); MiraisUketsukeDataController miraisUketsukeDataController = new MiraisUketsukeDataController(); //当日の受付データの取得 int iuno = Integer.parseInt(uno); UketsukeInfoData uData =uketukeInfoDataController.get(pid,iuno); int keCount = OrderInfoDataController.getWaitCount(iuno, "KE"); int echoCount = OrderInfoDataController.getWaitCount(iuno, "EC"); //ミライズのTMPデータ取得 MiraisUketsukeData muData = miraisUketsukeDataController.get(pid,iuno); int mkeCount = MiraisSaiketsuDataController.getWaitCount(iuno); if (mkeCount >= -1) { // 採血は-1も対象とする ※残血清 keCount = mkeCount; } int mechoCount = MiraisEchoDataController.getWaitCount(iuno); if (mechoCount > -1) { echoCount = mechoCount; } boolean orderFlag = false; if (keCount > -1 || echoCount > -1) { orderFlag = true; } try { int check = DbUtil.isServiceNow(pid, iuno, STARTTIME, ENDTIME, AFTERUKETSUKE); if (!orderFlag) { if (check != SERVICE_OK) {//運用時間外の場合は、サービス情報を表示する画面へ遷移 String infourl = INFO_CONSULTING + defParam + "&" + ERRCD + "="; //運用時間以外のアクセス時画面 infourl = infourl + String.valueOf(check); response.sendRedirect(infourl); //サービスが使用できない:情報画面へ遷移 return; } } } catch (Exception e) { String errUrl = ERRCD_99; response.sendRedirect(errUrl); //致命的エラー:エラー画面に背に return; } //URL if(uData == null){ //受付データなし //基本的にありえない } boolean bMsg = false; String errMsg = ""; String waitMsg = ""; //,区切りでメッセージを作成 boolean shinsatsuF = false; if(uData.getSaishinf().equalsIgnoreCase("5")){ //診察なし if(uData.getMijishif().equalsIgnoreCase("0")){//未実施検査なし errMsg = ERRMSG_021; //会計に行くように促すメッセージ } else if (orderFlag) { //採血・エコーオーダーあり bMsg = true; }else{//未実施検査あり errMsg = ERRMSG_222; //予約検査に行くよう促すメッセージ } }else if( uData.getStatus().equalsIgnoreCase(UKETSUKE_ALLEND)){//ステータス終了 errMsg = ERRMSG_021; //会計に行くように促すメッセージ }else if(uData.getStatus().equalsIgnoreCase(UKETSUKE_END) || uData.getStatus().equalsIgnoreCase(UKETSUKE_RETURN_END)){ // 診察終了・R診察終了 if(uData.getMijishif().equalsIgnoreCase("0")){//未実施検査なし errMsg = ERRMSG_021; //会計に行くように促すメッセージ } else if (orderFlag) { //採血・エコーオーダーあり errMsg = ERRMSG_222; //予約検査に行くよう促すメッセージ shinsatsuF = false; bMsg = true; }else{//未実施検査なし errMsg = ERRMSG_222; //予約検査に行くよう促すメッセージ shinsatsuF = false; } // }else if(uData.getStatus().equalsIgnoreCase(UKETSUKE_NOW) || uData.getStatus().equalsIgnoreCase(UKETSUKE_RETURN_NOW)){ }else if(muData.getStatusFlag() == MUKETSUKE_HUZAI){ // 診察中・R診察中 errMsg = ERRMSG_023; //2階外来中央に行くように促すメッセージ }else if(uData.getStatus().equalsIgnoreCase(UKETSUKE_READY) || uData.getStatus().equalsIgnoreCase(UKETSUKE_RETURN_READY)){ // 中待ち・R中待ち errMsg = ERRMSG_024; //診察室へ行くよう促すメッセージ bMsg = true; }else if(uData.getStatus().equalsIgnoreCase(UKETSUKE_RETURN)){ // 中待ち・R中待ち if(uData.getMijishif().equalsIgnoreCase("0")){//未実施検査なし //待ち人数取得 if( uData.getDoctorCode() == 0){ // 診察室振り分け errMsg = ERRMSG_25121; //担当医が決まっていない旨のメッセージ }else{ errMsg = ERRMSG_25122; //診察呼び出し待ちを促すメッセージ bMsg = true; } }else if (orderFlag) { errMsg = ERRMSG_25111; shinsatsuF = true; bMsg = true; }else { // 採血・エコー以外の未実施検査あり if(uData.getDoctorCode() == 0){ // 診察室振り分け errMsg = ERRMSG_25121; //担当医が決まっていない旨のメッセージ }else{ errMsg = ERRMSG_25122; //診察呼び出し待ちを促すメッセージ shinsatsuF = true; bMsg = true; } } }else if(uData.getStatus().equalsIgnoreCase(UKETSUKE_ENTRY) || uData.getStatus().equalsIgnoreCase(UKETSUKE_UKETSUKE)){ // エントリ・受付済 if (uData.getMijishif().equalsIgnoreCase("0")) { if( uData.getDoctorCode() == 0){ // 診察室未振り分け errMsg = ERRMSG_25121; //担当医が決まっていない旨のメッセージ }else{ errMsg = ERRMSG_25122; //診察呼び出し待ちを促すメッセージ bMsg = true; } } else if (orderFlag) { bMsg = true; shinsatsuF = true; } else { errMsg = ERRMSG_221; //予約検査に行くよう促すメッセージ shinsatsuF = true; } }else if(uData.getStatus().equalsIgnoreCase(UKETSUKE_DELETE)){ //受付中止 errMsg = ERRMSG_D; //受付中止の旨のメッセージ }else if(uData.getStatus().equalsIgnoreCase(UKETSUKE_KAIKEIEND)){//会計終了 errMsg = ERRMSG_E; //会計終了の旨のメッセージ } // 受付後指定された時間より前の状態であれば診察室決定済みでも未決定として表示する boolean check = DbUtil.isUketsukeService(uData,AFTERUKETSUKE); if (!check){ uData.setHeyaName(""); } //String name = new String(uData.getDoctorName().getBytes("ISO-8859-1"), "utf-8"); //String name = new String(uData.getDoctorName().getBytes("utf-8")); String name = uData.getDoctorName(); //name = name.replaceAll("濵","浜"); //name = name.replaceAll("﨑","崎"); //診察室詳細メッセージの設定 boolean isHuzai = false; // 不在かどうか if (keCount > -1 && bMsg) { errMsg = ERRMSG_001; //採血待ち人数メッセージの設定 //待ち人数取得 int count = keCount; //固定メッセージ waitMsg += MSG_KE_WAITCOUNT + ",";//1 //待ち人数 isHuzai = MiraisSaiketsuDataController.isHuzai(iuno); if (isHuzai) { waitMsg += " ,";//2 行固定のため必要 waitMsg += ERRMSG_KEHUZAI + ",";//3 waitMsg += " ,";//4 行固定のため必要 } else { waitMsg += MSG_ABOUT + ",";//2 waitMsg += String.valueOf(count) + ",";//3 waitMsg += MSG_COUNT + ",";//4 } if (shinsatsuF) { if(uData.getHeyaName().equals("")){ waitMsg += MSG_NO_ROOM; } else { waitMsg += MSG_ROOM1 + uData.getHeyaName() + "(" + name + ")" + MSG_ROOM2; } } else { waitMsg += " "; } } else if (echoCount > -1 && bMsg) { errMsg = ERRMSG_002; //エコー待ち人数メッセージの設定 //待ち人数取得 int count = echoCount; //固定メッセージ waitMsg += MSG_ECHO_WAITCOUNT + ",";//1 //待ち人数 isHuzai = MiraisEchoDataController.isHuzai(iuno); if (isHuzai) { waitMsg += " ,";//2 行固定のため必要 waitMsg += ERRMSG_KEHUZAI + ",";//3 waitMsg += " ,";//4 行固定のため必要 } else { waitMsg += MSG_ABOUT + ",";//2 waitMsg += String.valueOf(count) + ",";//3 waitMsg += MSG_COUNT + ",";//4 } if (shinsatsuF) { if(uData.getHeyaName().equals("")){ waitMsg += MSG_NO_ROOM; } else { waitMsg += MSG_ROOM1 + uData.getHeyaName() + "(" + name + ")" + MSG_ROOM2; } } else { waitMsg += " "; } } else if(bMsg){ //待ち人数取得 int count = waitCountDataController.getWaitCount(pid,iuno); //診察室名 waitMsg += uData.getHeyaName() + ","; //0 //固定メッセージ waitMsg += MSG_WAITCOUNT +",";//1 //待ち人数 waitMsg += MSG_ABOUT +",";//2 waitMsg += String.valueOf(count) +",";//3 waitMsg += MSG_COUNT +",";//4 //担当医 waitMsg += MSG_DOCTOR + name;//5 } String shinsatsuMsg = ""; if (shinsatsuF && !bMsg) { if(uData.getHeyaName().equals("")){ shinsatsuMsg += MSG_NO_ROOM; } else { shinsatsuMsg += MSG_ROOM1 + uData.getHeyaName() + "(" + name + ")" + MSG_ROOM2; } } String[] err = waitMsg.split(","); //診察室詳細情報を分別 ArrayList errList = new ArrayList(); int cnt = err.length; for(int i = 0;i < cnt; i++){ //診察室詳細情報の作成 String errStr = err[i]; // if(!errList.contains(errStr)){ errList.add(errStr); // } } String sp_header = ""; String ua = request.getHeader("user-agent"); if (ua.indexOf("iPhone") >= 0 || ua.indexOf("iPod") >= 0 || (ua.indexOf("Android") >= 0) && (ua.indexOf("Mobile") >= 0) || ua.indexOf("Windows Phone") >= 0) { sp_header = "\n\n"; } AccessLogUtil.log(pid, uno, errMsg, errList, shinsatsuMsg); %>