헬스케어 레몬 5 jaren geleden
bovenliggende
commit
f6c7d7329c

+ 206 - 9
app/src/main/java/com/dbs/mplus/knuh/activity/ConsentActivity.java

@@ -30,6 +30,7 @@ import android.widget.TextView;
 import android.widget.Toast;
 
 import com.dbs.mplus.knuh.BuildConfig;
+import com.dbs.mplus.knuh.MainActivity;
 import com.dbs.mplus.knuh.R;
 import com.dbs.mplus.knuh.activity.activityEvent.CenterMenu;
 import com.dbs.mplus.knuh.activity.activityEvent.LeftMenu;
@@ -39,6 +40,7 @@ import com.dbs.mplus.knuh.activity.activityEvent.TopMenu;
 import com.dbs.mplus.knuh.adapter.ConsentHistoryAdapter;
 import com.dbs.mplus.knuh.adapter.ConsentTempAdapter;
 import com.dbs.mplus.knuh.adapter.ViewPagerAdapter;
+import com.dbs.mplus.knuh.consent.ConsentFacade;
 import com.dbs.mplus.knuh.consent.sign.SignWrapper;
 import com.dbs.mplus.knuh.customView.CustomAlertDialog;
 import com.dbs.mplus.knuh.customView.CustomRadioGroup;
@@ -47,10 +49,17 @@ import com.dbs.mplus.knuh.customView.SoftKeyboard;
 import com.dbs.mplus.knuh.fragment.HistoryFragment;
 import com.dbs.mplus.knuh.fragment.MarkerFragment;
 import com.dbs.mplus.knuh.fragment.SearchFragment;
+import com.dbs.mplus.knuh.httpTask.HttpCallBack;
 import com.dbs.mplus.knuh.model.PatientInfoVO;
 import com.dbs.mplus.knuh.util.ConsentConfig;
 import com.dbs.mplus.knuh.util.Util;
 
+import org.json.JSONObject;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+
 public class ConsentActivity extends AppCompatActivity {
 
   private static final String TAG = "ConsentActivity";
@@ -195,15 +204,6 @@ public class ConsentActivity extends AppCompatActivity {
     mContext  = this;
 
     getIntentData();
-
-
-    setTopMenuLayout();
-    setTapMenuLayout();
-    setLeftLayout();
-    setCenterLayout();
-    setRightLayout();
-
-    setTopMenuEvent();
   }
 
   private void getIntentData() {
@@ -231,7 +231,204 @@ public class ConsentActivity extends AppCompatActivity {
     Log.e(TAG, "drKind    -- > " + drKind   );
 
     setLoadClass();
+
+    String saveUserId   = Util.getStringPreference(mContext, "saveProc", "saveUserId");
+    String saveFormName = Util.getStringPreference(mContext, "saveProc", "saveFormName");
+    String saveType     = Util.getStringPreference(mContext, "saveProc", "saveType");
+    String saveProcData = Util.getStringPreference(mContext, "saveProc", "saveProcData");
+    final HashMap saveData = Util.saveConsentData(saveProcData);
+
+
+    String eptFilePath = Util.getStringPreference(mContext, "saveProc", "eptFilePath");
+    final File eptFile = new File(eptFilePath);
+
+    String msg = "";
+    if (saveType.equals("SAVE")) {
+      msg = mContext.getString(R.string.cert);
+    } else if (saveType.equals("TEMP_SAVE")) {
+      msg = mContext.getString(R.string.temp);
+    } else if (saveType.equals("TEMP_SAVE2")) {
+      msg = getString(R.string.confirm);
+    }
+
+    if (saveUserId.equals(userId) && eptFile.exists()) {
+      String message = String.format(getString(R.string.saveFailConsentMsg), msg, saveFormName);
+      csAlert.show();
+      csAlert.setContent(message, "");
+      csAlert.btnConfirm.setOnClickListener(new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+
+          HashMap<String, Object> globalParam = Util.saveConsentData(saveData.get("globalParam").toString());
+          HashMap<String, Object> formListParam = Util.saveConsentData(saveData.get("formListParam").toString());
+          ArrayList<HashMap<String, Object>> mapArrayList = new ArrayList<>();
+          mapArrayList.add(formListParam);
+
+          HashMap map = new HashMap();
+          map.put("globalParam", globalParam);
+          map.put("formListParam", mapArrayList);
+
+          ConsentFacade consentFacade = new ConsentFacade(mContext, formListParam.get("consentStateEng").toString());
+          consentFacade.startConsent(map, "Y", "");
+          csAlert.dismiss();
+        }
+      });
+
+      csAlert.btnCancel.setOnClickListener(new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+          eptFile.delete();
+          Util.clearSaveProcData(mContext);
+          csAlert.dismiss();
+        }
+      });
+
+    }
+
+//    String saveUserId   = Util.getStringPreference(mContext, "saveProc", "saveUserId");
+//    String saveFormName = Util.getStringPreference(mContext, "saveProc", "saveFormName");
+//    String saveType     = Util.getStringPreference(mContext, "saveProc", "saveType");
+//    String msg = "";
+//    if (saveType.equals("SAVE")) {
+//      msg = mContext.getString(R.string.cert);
+//    } else if (saveType.equals("TEMP_SAVE")) {
+//      msg = mContext.getString(R.string.temp);
+//    } else if (saveType.equals("TEMP_SAVE2")) {
+//      msg = getString(R.string.confirm);
+//    }
+//
+//    if (saveUserId.equals(userId)) {
+//      String message = String.format(getString(R.string.saveFailConsentMsg), msg, saveFormName);
+//      csAlert.show();
+//      csAlert.setContent(message, "");
+//      csAlert.btnConfirm.setOnClickListener(new View.OnClickListener() {
+//        @Override
+//        public void onClick(View v) {
+//          saveConsentProc(0);
+//          csAlert.dismiss();
+//        }
+//      });
+//
+//      csAlert.btnCancel.setOnClickListener(new View.OnClickListener() {
+//        @Override
+//        public void onClick(View v) {
+//          Util.clearSaveProcData(mContext);
+//          setContentLoad();
+//          csAlert.dismiss();
+//        }
+//      });
+//
+//    } else {
+//      setContentLoad();
+//    }
+
+    setContentLoad();
+  }
+
+  private void setContentLoad() {
+    runOnUiThread(new Runnable() {
+      @Override
+      public void run() {
+        setTopMenuLayout();
+        setTapMenuLayout();
+        setLeftLayout();
+        setCenterLayout();
+        setRightLayout();
+
+        setTopMenuEvent();
+      }
+    });
+
+  }
+  
+  /**
+  * 저장 실패한 동의서를 불러와 재시도
+  * @author jksong
+  * @since 2020-10-22 오전 10:36
+  **/
+  private void saveConsentProc(int count) {
+    showProgress();
+    final int cnt = count;
+    String saveProcData = Util.getStringPreference(mContext, "saveProc", "saveProcData");
+    String saveUserId = Util.getStringPreference(mContext, "saveProc", "saveUserId");
+    String saveUserJobKindCd = Util.getStringPreference(mContext, "saveProc", "saveUserJobKindCd");
+    String saveAction = Util.getStringPreference(mContext, "saveProc", "saveAction");
+    String saveMethod = Util.getStringPreference(mContext, "saveProc", "saveMethod");
+    HashMap saveData = Util.saveConsentData(saveProcData);
+
+    if (saveUserId.equals(userId)) {
+      HttpCallBack callBack = new HttpCallBack() {
+        @Override
+        public void result(String result) {
+          Log.e(TAG, "result -- > " + result);
+          dismissProgress();
+          if (result ==  null || result.equals("")) {
+            stop();
+          } else {
+            JSONObject object = Util.xmltoJsonObject(result);
+            String res = Util.xmlToJsonString(object);
+            ArrayList<HashMap<String, String>> mapArrayList = Util.parseJSON(mContext, res);
+
+            String strRts = mapArrayList.get(0).get("responseData");
+
+            int rts = Integer.parseInt(strRts);
+            if (rts == -1) {
+              stop();
+            } else {
+              Util.clearSaveProcData(mContext);
+              setContentLoad();
+            }
+          }
+        }
+
+        @Override
+        public void stop() {
+          csAlert.show();
+          String message = "";
+          if (cnt < 3) {
+            message = String.format(getString(R.string.saveFailreTryMsg), String.valueOf(cnt));
+            csAlert.setContent(message, "");
+            csAlert.btnConfirm.setOnClickListener(new View.OnClickListener() {
+              @Override
+              public void onClick(View v) {
+                saveConsentProc(cnt + 1);
+                csAlert.dismiss();
+              }
+            });
+
+            csAlert.btnCancel.setOnClickListener(new View.OnClickListener() {
+              @Override
+              public void onClick(View v) {
+                Util.clearSaveProcData(mContext);
+                setContentLoad();
+                csAlert.dismiss();
+              }
+            });
+          } else {
+            message = getString(R.string.saveFail);
+            csAlert.setContent(message, ConsentConfig.ALERT_BTN_TYPE);
+            csAlert.btnConfirm2.setOnClickListener(new View.OnClickListener() {
+              @Override
+              public void onClick(View v) {
+                Util.clearSaveProcData(mContext);
+                setContentLoad();
+                csAlert.dismiss();
+              }
+            });
+          }
+
+        }
+
+        @Override
+        public void error() {
+
+        }
+      };
+
+      Util.callHttpUrlConnection(mContext, saveAction, saveMethod, saveData, callBack);
+    }
   }
+  
 
   private void setLoadClass() {
     loadingProgress = new LoadingProgress(mContext);

+ 2 - 2
app/src/main/java/com/dbs/mplus/knuh/activity/LoginActivity.java

@@ -97,8 +97,8 @@ public class LoginActivity extends AppCompatActivity {
     ivLogo.setImageResource(logo);
     certCheck.setChecked(true);
 
-    etId.setText("EMR");
-    etPasswd.setText("wjstkstlf1!");
+//    etId.setText("EMR");
+//    etPasswd.setText("wjstkstlf1!");
 
     // 의사
 //    etId.setText("96070");

+ 4 - 1
app/src/main/java/com/dbs/mplus/knuh/consent/ConsentCreateParam.java

@@ -282,7 +282,7 @@ public class ConsentCreateParam {
   * @author jksong
   * @since 2020-05-06 오전 10:08
   **/
-  public ArrayList<HashMap<String, String>> setFormParam(String consentMstRid, String formRid, String guid, String formPrntNm, String formCd, String linkFormCd, String ocrTag, String drOnly) {
+  public ArrayList<HashMap<String, String>> setFormParam(String consentMstRid, String formRid, String guid, String formPrntNm, String formCd, String linkFormCd, String ocrTag, String drOnly, String formName) {
     ArrayList<HashMap<String, String>> mapArrayList = new ArrayList<HashMap<String, String>>();
     HashMap<String, String> map   = new HashMap<String, String>();
     HashMap<String, String> mData = new HashMap<String, String>();
@@ -302,6 +302,7 @@ public class ConsentCreateParam {
     map.put("formCd", formCd);
     map.put("formRid", formRid);
     map.put("drOnly", drOnly);
+    map.put("formName", formName);
 
     mapArrayList.add(map);
 
@@ -619,6 +620,7 @@ public class ConsentCreateParam {
     String formCd     = consentFormListVO.getFormCd();
     String formRid    = consentFormListVO.getFormRid();
     String drOnly     = consentFormListVO.getDrOnly();
+    String formName   = consentFormListVO.getFormName();
 
     map.put("consentStateEng", consentFormListVO.getConsentStateEng());
     map.put("parCMSGBD_ocr_cd", ocrTag.equals("") ? getOcrTag() : ocrTag);
@@ -628,6 +630,7 @@ public class ConsentCreateParam {
     map.put("formCd", formCd);
     map.put("formRid", formRid);
     map.put("drOnly", drOnly);
+    map.put("formName", formName);
 
     return map;
   }

+ 2 - 1
app/src/main/java/com/dbs/mplus/knuh/consent/ConsentEvent.java

@@ -51,6 +51,7 @@ public class ConsentEvent {
     String cretNo                = consentFormListVO.getCretNo();
     String jinjeongCd            = consentFormListVO.getJinjeongCd();
     final String linkCd          = jinjeongCd.equals("-") ? linkFormCd : jinjeongCd;
+    final String formName              = consentFormListVO.getFormName();
 
 //    Log.e(TAG, "formCd       -- > " + formCd      );
 //    Log.e(TAG, "userDrFlag   -- > " + userDrFlag  );
@@ -140,7 +141,7 @@ public class ConsentEvent {
               } else {
                 ConsentCreateParam consentCreateParam = new ConsentCreateParam(mContext, userDrFlag, consentState, consentStateEng);
                 HashMap<String, String> globalParam = consentCreateParam.setGlobalParam(patientInfoVO, consentMstRid, consentFormListVO);
-                ArrayList<HashMap<String, String>> mapArrayList = consentCreateParam.setFormParam(consentMstRid, formRid, guid, formPrntNm, formCd, linkCd, ocrTag, drOnly);
+                ArrayList<HashMap<String, String>> mapArrayList = consentCreateParam.setFormParam(consentMstRid, formRid, guid, formPrntNm, formCd, linkCd, ocrTag, drOnly, formName);
 
                 HashMap map = new HashMap();
                 map.put("globalParam", globalParam);

+ 14 - 3
app/src/main/java/com/dbs/mplus/knuh/consent/ConsentFacade.java

@@ -25,6 +25,7 @@ import com.dbs.mplus.knuh.consent.sign.SignWrapper;
 import com.dbs.mplus.knuh.util.ConsentConfig;
 import com.dbs.mplus.knuh.util.Util;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -58,6 +59,7 @@ public class ConsentFacade {
   private RunOption createRunOption() {
     RunOption runOption = new RunOption();
 
+    runOption.setDeletePrivateTempFilesForDaysFromToday(7); // 현재 날짜를 기준으로 7일전 까지의 ept 파일을 자동으로 삭제
     runOption.setScreenOrientation(ScreenOrientation.Sensor);  // 가로세로 전환 모드
     runOption.setFirstPageLoad(true);              // 서식 로딩 시 첫 페이지만 로딩
     runOption.setUseCaching(false);                // 로컬 파일 생성하여 캐싱 사용 여부
@@ -219,8 +221,8 @@ public class ConsentFacade {
     fos += "  <global>";
     fos += this.createFosPageTemplate();
     fos += "    <parameters>"; // form-list의 모든 서식에 적용될 파라미터
-//    fos += "            <param key='UrlParam'>" + BuildConfig.CONSENT_SERVER_URL + "</param>";
-    fos += "            <param key='UrlParam'>" + "https://ema031.knuh.kr:9091" + "</param>";
+    fos += "            <param key='UrlParam'>" + BuildConfig.CONSENT_SERVER_URL + "</param>";
+//    fos += "            <param key='UrlParam'>" + "https://ema031.knuh.kr:9091" + "</param>";
     fos += this.createParamString((HashMap<String, String>) consentData.get("globalParam"));
     fos += "    </parameters>";
     fos += "   </global>";
@@ -255,6 +257,7 @@ public class ConsentFacade {
 
   private String createFormString(List<Map<String, String>> formMapList) {
     String fos = "";
+    String path = BuildConfig.CONSENT_EFORM_SERVER_URL;
     for (int i = 0; i < formMapList.size(); i++) {
       Map<String, String> formMap = formMapList.get(i);
       String rid = formMap.get("rid");
@@ -268,7 +271,15 @@ public class ConsentFacade {
         newForm = false;
       }
 
-      fos += "    <form name='noname' open-sequence='" + (i + 1) + "' path='" + BuildConfig.CONSENT_EFORM_SERVER_URL + "' request-encode='utf-8' response-encode='utf-8'>";
+      String eptFilePath = Util.getStringPreference(mContext, "saveProc", "eptFilePath");
+      File eptFile = new File(eptFilePath);
+      if (eptFile.exists() == true) {
+        if (!eptFilePath.equals("")) {
+          path = eptFile.toString();
+        }
+      }
+
+      fos += "    <form name='noname' open-sequence='" + (i + 1) + "' path='" + path + "' request-encode='utf-8' response-encode='utf-8'>";
       fos += "      <parameters>";
       fos += this.createParamString((HashMap<String, String>) formMap);
       fos += "      </parameters>";

+ 36 - 4
app/src/main/java/com/dbs/mplus/knuh/consent/EFormSaveHandler.java

@@ -77,6 +77,7 @@ public class EFormSaveHandler implements IEventHandler<ResultEventArgs>, HttpCal
     String userDeptCd        = Util.getStringPreference(mContext, "userInfo", "deptCd");
     String loginUserJobKindCd = Util.getStringPreference(mContext, "userInfo", "jobKindCd");
 
+    String formName          = formParam.get("formName");
     String drOnly            = formParam.get("drOnly") == null ? "" : formParam.get("drOnly");
     String patientCode       = globalParam.get("parCMDCHD_1PatientNo");
     String clnDeptCode       = globalParam.get("parCMDCHD_1DepartmentCd");
@@ -123,9 +124,12 @@ public class EFormSaveHandler implements IEventHandler<ResultEventArgs>, HttpCal
       }
     }
 
-    File eptFile = new File(eptFilePath);
-    eptFile.delete();
+    Util.setStringPreference(mContext, "saveProc", "eptFilePath", eptFilePath);
+    Util.setStringPreference(mContext, "saveProc", "saveProcData", String.valueOf(new JSONObject(consentData)));
+//    File eptFile = new File(eptFilePath);
+//    eptFile.delete();
 
+    resultMap.put("formName", formName);
     resultMap.put("drOnly", drOnly);
     resultMap.put("userId", userId);
     resultMap.put("userDeptCd", userDeptCd);
@@ -167,6 +171,13 @@ public class EFormSaveHandler implements IEventHandler<ResultEventArgs>, HttpCal
     return resultMap;
   }
 
+  private void saveProcData(HashMap saveData, String saveType) {
+    String saveUserId = Util.getStringPreference(mContext, "userInfo", "userId");
+    Util.setStringPreference(mContext, "saveProc", "saveUserId", saveUserId);
+    Util.setStringPreference(mContext, "saveProc", "saveFormName", saveData.get("formName").toString());
+    Util.setStringPreference(mContext, "saveProc", "saveType", saveType);
+  }
+
   private void saveProcess(HashMap saveData, ResultEventArgs eventArgs) {
     buttonType = eventArgs.getResultCode().toString();
     Log.e(TAG, "buttonType -- > " + buttonType);
@@ -186,8 +197,6 @@ public class EFormSaveHandler implements IEventHandler<ResultEventArgs>, HttpCal
             HttpSoapConnection connection = new HttpSoapConnection(ConsentConfig.HOST_CONSENT, ConsentConfig.CHECK_CONSENT_STATE, mData);
             SoapObject object = connection.execute().get();
             state = Integer.parseInt(object.getProperty("responseData").toString().trim());
-            Log.e(TAG, "mData -- > " + mData);
-            Log.e(TAG, "state -- > " + state);
           }
 
         } catch (ExecutionException e) {
@@ -199,6 +208,11 @@ public class EFormSaveHandler implements IEventHandler<ResultEventArgs>, HttpCal
         }
 
         if (state == 1) {
+          String eptFilePath = Util.getStringPreference(mContext, "saveProc", "eptFilePath");
+          File eptFile = new File(eptFilePath);
+          eptFile.delete();
+
+          Util.clearSaveProcData(mContext);
           eFormToolkit.sendEFormViewerCancelEvent(mContext.getString(R.string.writeConsnet));
           return;
         }
@@ -206,6 +220,11 @@ public class EFormSaveHandler implements IEventHandler<ResultEventArgs>, HttpCal
         String jobKindCd = Util.getStringPreference(mContext, "userInfo", "jobKindCd");
         if (saveData.get("drOnly").equals("Y") && jobKindCd.indexOf("03") != 0) {
           if (eventArgs.getResultCode() == ResultCode.SAVE) {
+            String eptFilePath = Util.getStringPreference(mContext, "saveProc", "eptFilePath");
+            File eptFile = new File(eptFilePath);
+            eptFile.delete();
+
+            Util.clearSaveProcData(mContext);
             eFormToolkit.sendEFormViewerCancelEvent(mContext.getString(R.string.doctorOnly));
             return;
           }
@@ -220,6 +239,7 @@ public class EFormSaveHandler implements IEventHandler<ResultEventArgs>, HttpCal
 
 //            eFormToolkit.sendEFormViewerOkEvent();
 //            Util.callHttp(mContext, ConsentConfig.HOST_CONSENT, ConsentConfig.SAVE_CONFIRM_CERTIFY, saveData, callBack);
+            saveProcData(saveData, ResultCode.SAVE.toString());
             Util.callHttpUrlConnection(mContext, ConsentConfig.HOST_CONSENT, ConsentConfig.SAVE_CONFIRM_CERTIFY, saveData, callBack);
             break;
           case TEMP_SAVE:  // 임시저장
@@ -227,6 +247,7 @@ public class EFormSaveHandler implements IEventHandler<ResultEventArgs>, HttpCal
             saveData.put("consentState", "TEMP");
 //            eFormToolkit.sendEFormViewerOkEvent();
 //            Util.callHttp(mContext, ConsentConfig.HOST_CONSENT, ConsentConfig.SAVE_TEMP, saveData, callBack);
+            saveProcData(saveData, ResultCode.TEMP_SAVE.toString());
             Util.callHttpUrlConnection(mContext, ConsentConfig.HOST_CONSENT, ConsentConfig.SAVE_TEMP, saveData, callBack);
             break;
           case TEMP_SAVE2: // 확인저장
@@ -240,6 +261,7 @@ public class EFormSaveHandler implements IEventHandler<ResultEventArgs>, HttpCal
 
 //              eFormToolkit.sendEFormViewerOkEvent();
 //              Util.callHttp(mContext, ConsentConfig.HOST_CONSENT, ConsentConfig.SAVE_CONFIRM_CERTIFY, saveData, callBack);
+              saveProcData(saveData, ResultCode.TEMP_SAVE2.toString());
               Util.callHttpUrlConnection(mContext, ConsentConfig.HOST_CONSENT, ConsentConfig.SAVE_CONFIRM_CERTIFY, saveData, callBack);
             }
 
@@ -374,6 +396,11 @@ public class EFormSaveHandler implements IEventHandler<ResultEventArgs>, HttpCal
           }
         }
 
+        String eptFilePath = Util.getStringPreference(mContext, "saveProc", "eptFilePath");
+        File eptFile = new File(eptFilePath);
+        eptFile.delete();
+
+        Util.clearSaveProcData(mContext);
         eFormToolkit.sendEFormViewerOkEvent();
       }
     }
@@ -391,6 +418,11 @@ public class EFormSaveHandler implements IEventHandler<ResultEventArgs>, HttpCal
       msg = mContext.getString(R.string.confirm);
     }
 
+    String eptFilePath = Util.getStringPreference(mContext, "saveProc", "eptFilePath");
+    File eptFile = new File(eptFilePath);
+    eptFile.delete();
+
+    Util.clearSaveProcData(mContext);
     eFormToolkit.sendEFormViewerCancelEvent(String.format(mContext.getString(R.string.saveFailed), msg));
   }
 

+ 42 - 0
app/src/main/java/com/dbs/mplus/knuh/util/Util.java

@@ -438,6 +438,15 @@ public class Util {
     editor.commit();
   }
 
+  /**
+  * 저장에 실패한 동의서 데이터 삭제
+  * @author jksong
+  * @since 2020-10-22 오전 11:28
+  **/
+  public static void clearSaveProcData(Context context) {
+    Util.clearPreference(context, "saveProc");
+  }
+
   public static boolean allElementsTheSame(String[] array) {
     if (array.length == 0) {
       return true;
@@ -905,6 +914,39 @@ public class Util {
     return rtn;
   }
 
+  public static HashMap<String, Object> saveConsentData(String saveProcData) {
+
+    if (saveProcData.indexOf("[") == 0) { // 첫 번째에 [ 가 포함되어 있음
+    } else {
+      StringBuilder stringBuilder = new StringBuilder();
+      stringBuilder.append("[");
+      stringBuilder.append(saveProcData);
+      stringBuilder.append("]");
+      saveProcData = stringBuilder.toString();
+    }
+
+    HashMap<String, Object> hashMap = new HashMap<String, Object>();
+    try {
+      JSONArray array = new JSONArray(saveProcData);
+      for (int i = 0; i < array.length(); i++) {
+
+        JSONObject object = array.getJSONObject(i);
+        Iterator<?> keys = object.keys();
+
+        while (keys.hasNext()) {
+          String key = (String) keys.next();
+          String val = object.getString(key);
+
+          hashMap.put(key, val);
+        }
+      }
+    } catch (JSONException e) {
+      e.printStackTrace();
+    }
+
+    return hashMap;
+  }
+
   public static JSONObject xmltoJsonObject(String result) {
     JSONObject object = null;
     JSONObject object1 = null;

+ 3 - 0
app/src/main/res/values/strings.xml

@@ -123,6 +123,9 @@
     <string name="doctorOnly">의사만 인증저장 가능한 동의서 입니다. \n문의: 보건의료정보관리(의무기록)팀</string>
 
     <string name="electrCmpCheckeMsg">확인저장 서식은 함께 작성할 수 없습니다.</string>
+    <string name="saveFailConsentMsg">%1s저장에 실패한 동의서가 있습니다. 저장하시겠습니까?\n %1s</string>
+    <string name="saveFailreTryMsg">저장에 실패하였습니다.\n 다시 시도하시겠습니까? (%1s/3)</string>
+    <string name="saveFail">저장에 실패하였습니다.</string>
 
     <string name="certPassConsentConfirmNotSave">[확인저장] 할 수 없습니다. [인증저장] 으로 진행하시기 바랍니다.</string>
     <string name="baseDataError">기본 정보 설정에 실패하였습니다. \n다시 시도해주세요.</string>