|
@@ -199,33 +199,29 @@ public class CaseFrontSheetMainService {
|
|
|
}
|
|
|
|
|
|
public ResultVo<CaseFrontsheetMain> getPatientInfo(SheetOverview overview) {
|
|
|
- CaseFrontsheetMain sheet;
|
|
|
String bah = overview.getBah();
|
|
|
Integer times = overview.getTimes();
|
|
|
StandardAddressMember standardAddressMember = getStandardAddressMember(bah);
|
|
|
- int fileStatus = overview.getFileStatus();
|
|
|
- if (fileStatus == 1) {
|
|
|
- sheet = dao.selectSignedSheetMain(bah, times);
|
|
|
- if (null != sheet) {
|
|
|
- sheet.setDisdiagList(getSheetDisDiags(bah, times, fileStatus));
|
|
|
- sheet.setSurgeryList(getSheetSurgeries(bah, times, fileStatus));
|
|
|
- if (null != standardAddressMember) {
|
|
|
- sheet.setStandardAddress(standardAddressMember.makeStandardAddress());
|
|
|
- }
|
|
|
- if (sheet.getAge() == 0 && null == sheet.getAgeDays()) {
|
|
|
- sheet.setAgeDays(DateUtil.calculateNewBornAge(sheet.getBirthDate(), sheet.getAdmissDate()));
|
|
|
- dao.updateNewBornAge(bah, times, sheet.getAgeDays());
|
|
|
- }
|
|
|
- if (StringUtil.isBlank(sheet.getMedType())) {
|
|
|
- String psnmedtype = dao.selectMedType(sheet.getBah(), sheet.getAdmissTimes());
|
|
|
- MedType medType = MedType.get(psnmedtype);
|
|
|
- if (null != medType) {
|
|
|
- sheet.setMedType(psnmedtype);
|
|
|
- sheet.setMedTypeName(medType.getName());
|
|
|
- }
|
|
|
+ CaseFrontsheetMain sheet = dao.selectSignedSheetMain(bah, times);
|
|
|
+ if (null != sheet) {
|
|
|
+ sheet.setDisdiagList(getSheetDisDiags(bah, times, 1));
|
|
|
+ sheet.setSurgeryList(getSheetSurgeries(bah, times, 1));
|
|
|
+ if (null != standardAddressMember) {
|
|
|
+ sheet.setStandardAddress(standardAddressMember.makeStandardAddress());
|
|
|
+ }
|
|
|
+ if (sheet.getAge() == 0 && null == sheet.getAgeDays()) {
|
|
|
+ sheet.setAgeDays(DateUtil.calculateNewBornAge(sheet.getBirthDate(), sheet.getAdmissDate()));
|
|
|
+ dao.updateNewBornAge(bah, times, sheet.getAgeDays());
|
|
|
+ }
|
|
|
+ if (StringUtil.isBlank(sheet.getMedType())) {
|
|
|
+ String psnmedtype = dao.selectMedType(sheet.getBah(), sheet.getAdmissTimes());
|
|
|
+ MedType medType = MedType.get(psnmedtype);
|
|
|
+ if (null != medType) {
|
|
|
+ sheet.setMedType(psnmedtype);
|
|
|
+ sheet.setMedTypeName(medType.getName());
|
|
|
}
|
|
|
- return ResultVoUtil.success(sheet);
|
|
|
}
|
|
|
+ return ResultVoUtil.success(sheet);
|
|
|
}
|
|
|
int flag = overview.getInOutFlag();
|
|
|
if (flag == 2) {
|
|
@@ -260,20 +256,16 @@ public class CaseFrontSheetMainService {
|
|
|
sheet2.setDismissDate(dismissDate);
|
|
|
}
|
|
|
CaseFrontsheetMain sheet3 = dao.getBatjBa1(bah, times);
|
|
|
- if (sheet3 == null) {
|
|
|
- if (dao.isBatjBa1Exist(bah, times) == 0) {
|
|
|
- dao.createBatjBa1(bah, times, sheet.getName(), sheet2.getAdmissDate(),
|
|
|
- sheet2.getAdmissDept(), sheet2.getAdmissWard());
|
|
|
- log.info("insert batjBa1>>> " + bah + ", " + times);
|
|
|
- }
|
|
|
+ if (sheet3 == null && dao.isBatjBa1Exist(bah, times) == 0) {
|
|
|
+ dao.createBatjBa1(bah, times, sheet.getName(), sheet2.getAdmissDate(),
|
|
|
+ sheet2.getAdmissDept(), sheet2.getAdmissWard());
|
|
|
+ log.info("insert batjBa1>>> " + bah + ", " + times);
|
|
|
}
|
|
|
CaseFrontsheetMain sheet4 = flag == 1 ? dao.getBatjBa2ForInPatient(bah, times) :
|
|
|
dao.getBatjBa2ForOutPatient(bah, times);
|
|
|
- if (sheet4 == null) {
|
|
|
- if (dao.isBatjBa2Exist(bah, times) == 0) {
|
|
|
- dao.createBatjBa2(bah, times);
|
|
|
- log.info("insert batjBa2>>> " + bah + ", " + times);
|
|
|
- }
|
|
|
+ if (sheet4 == null && dao.isBatjBa2Exist(bah, times) == 0) {
|
|
|
+ dao.createBatjBa2(bah, times);
|
|
|
+ log.info("insert batjBa2>>> " + bah + ", " + times);
|
|
|
}
|
|
|
mergeObject(sheet1, sheet);
|
|
|
mergeObject(sheet2, sheet);
|
|
@@ -286,23 +278,17 @@ public class CaseFrontSheetMainService {
|
|
|
sheet.setZyDismissWay("4");
|
|
|
}
|
|
|
Integer days = DateUtil.daysBetween(sheet.getDismissDate(), sheet.getAdmissDate());
|
|
|
- if (0 == days) {
|
|
|
- days = 1;
|
|
|
- }
|
|
|
- if (days > 0) {
|
|
|
- sheet.setAdmissDays(String.valueOf(days));
|
|
|
- }
|
|
|
-
|
|
|
+ sheet.setAdmissDays(0 == days ? "1" : String.valueOf(days));
|
|
|
if (null == sheet.getQualityControlDate()) {
|
|
|
sheet.setQualityControlDate(new Date());
|
|
|
}
|
|
|
- sheet.setDisdiagList(getSheetDisDiags(bah, times, fileStatus));
|
|
|
- sheet.setSurgeryList(getSheetSurgeries(bah, times, fileStatus));
|
|
|
- if (null != standardAddressMember) {
|
|
|
+ sheet.setDisdiagList(getSheetDisDiags(bah, times, 0));
|
|
|
+ sheet.setSurgeryList(getSheetSurgeries(bah, times, 0));
|
|
|
+ if (null == standardAddressMember) {
|
|
|
+ sheet.setLivePlaceCombo(sheet.getLivePlace());
|
|
|
+ } else {
|
|
|
sheet.setStandardAddress(standardAddressMember.makeStandardAddress());
|
|
|
sheet.setLivePlaceCombo(standardAddressMember.makeAddressCombo() + sheet.getLivePlace());
|
|
|
- } else {
|
|
|
- sheet.setLivePlaceCombo(sheet.getLivePlace());
|
|
|
}
|
|
|
return ResultVoUtil.success(sheet);
|
|
|
}
|
|
@@ -618,38 +604,18 @@ public class CaseFrontSheetMainService {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "校验未通过。", map);
|
|
|
}
|
|
|
sheet.setAddressMember(getStandardAddress(sheet.getStandardAddress()));
|
|
|
- sheet.setIsDoctorPrint(true);
|
|
|
- List<CodeName> force = VerifyCaseFrontSheet.getInstance().printVerify(sheet, param.getOpType());
|
|
|
- CaseFrontsheetDisdiag disdiag = sheet.getDisdiagList().get(0);
|
|
|
- List<CodeName> advice = VerifyCaseFrontSheet.getInstance().adviseVerification(sheet.getSocialNo(), disdiag.getCode());
|
|
|
- setlQualityControlPass(sheet, advice);
|
|
|
- surgeryChargesVerify(sheet, advice);
|
|
|
- JSONObject powersi = powersiQualityCheck(sheet);
|
|
|
- if (null != powersi) {
|
|
|
- JSONObject responseEntity = powersi.getJSONObject("responseEntity");
|
|
|
- if (null != responseEntity) {
|
|
|
- JSONArray retarr = responseEntity.getJSONArray("newSettleMemInfo");
|
|
|
- if (null != retarr && retarr.size() > 0) {
|
|
|
- for (int i = 0; i < retarr.size(); i++) {
|
|
|
- advice.add(new CodeName("", retarr.getJSONObject(i).getString("result_msg")));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (force.isEmpty()) {
|
|
|
+ Map<String, List<CodeName>> warnings = beginAnalyzeSheet(sheet, param.getOpType());
|
|
|
+ if (warnings.get("force").isEmpty()) {
|
|
|
saveSheet(sheet);
|
|
|
if (param.getPage() == 2) {
|
|
|
sheet.setFileStatus(0);
|
|
|
insertSheetData(sheet);
|
|
|
}
|
|
|
- if (advice.isEmpty()) {
|
|
|
+ if (warnings.get("advice").isEmpty()) {
|
|
|
return ResultVoUtil.success();
|
|
|
}
|
|
|
}
|
|
|
- Map<String, List<CodeName>> map = new HashMap<>();
|
|
|
- map.put("force", force);
|
|
|
- map.put("advice", advice);
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "校验未通过。", map);
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "校验未通过。", warnings);
|
|
|
}
|
|
|
|
|
|
public ResultVo<List<CodeName>> saveVerify(OpCaseFrontsheet info) {
|
|
@@ -670,6 +636,53 @@ public class CaseFrontSheetMainService {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "校验未通过。", message);
|
|
|
}
|
|
|
|
|
|
+ private Map<String, List<CodeName>> beginAnalyzeSheet(CaseFrontsheetMain sheet, int optype) {
|
|
|
+ List<CodeName> force = VerifyCaseFrontSheet.getInstance().printVerify(sheet, optype);
|
|
|
+ CaseFrontsheetDisdiag disdiag = sheet.getDisdiagList().get(0);
|
|
|
+ List<CodeName> advice = VerifyCaseFrontSheet.getInstance().adviseVerification(sheet.getSocialNo(), disdiag.getCode());
|
|
|
+ setlQualityControlPass(sheet, advice);
|
|
|
+ surgeryChargesVerify(sheet, advice);
|
|
|
+ JSONObject powersi = powersiQualityCheck(sheet);
|
|
|
+ if (null != powersi) {
|
|
|
+ JSONObject responseEntity = powersi.getJSONObject("responseEntity");
|
|
|
+ if (null != responseEntity) {
|
|
|
+ JSONArray retarr = responseEntity.getJSONArray("newSettleMemInfo");
|
|
|
+ if (null != retarr && retarr.size() > 0) {
|
|
|
+ for (int i = 0; i < retarr.size(); i++) {
|
|
|
+ advice.add(new CodeName("", retarr.getJSONObject(i).getString("result_msg")));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Map<String, List<CodeName>> map = new HashMap<>();
|
|
|
+ map.put("force", force);
|
|
|
+ map.put("advice", advice);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ public ResultVo<Map<String, List<CodeName>>> sheetVerification(SheetOverview view) {
|
|
|
+ if (StringUtil.isBlank(view.getBah()) || null == view.getTimes() || null == view.getInOutFlag()) {
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "住院号、住院次数、在院状态不能为空。");
|
|
|
+ }
|
|
|
+ CaseFrontsheetMain sheet = getPatientInfo(view).getData();
|
|
|
+ if (null == sheet) {
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "没有查询到病案数据。");
|
|
|
+ }
|
|
|
+ Map<String, List<CodeName>> warnings = beginAnalyzeSheet(sheet, 4);
|
|
|
+ if (warnings.get("force").isEmpty()) {
|
|
|
+ Integer status = dao.selectFileStatus(sheet.getBah(), sheet.getAdmissTimes());
|
|
|
+ status = null == status ? -1 : status;
|
|
|
+ if (status == 0) {
|
|
|
+ dao.deleteSheetInfo(view.getBah(), view.getTimes());
|
|
|
+ }
|
|
|
+ if (status < 1) {
|
|
|
+ sheet.setFileStatus(0);
|
|
|
+ insertSheetData(sheet);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return ResultVoUtil.success(warnings);
|
|
|
+ }
|
|
|
+
|
|
|
public ResultVo<List<YiBaoDisdiag>> getYbDiags(String bah, int times) {
|
|
|
List<YiBaoDisdiag> diags = dao.getYbDiags(bah, times);
|
|
|
return ResultVoUtil.success(diags);
|
|
@@ -705,7 +718,6 @@ public class CaseFrontSheetMainService {
|
|
|
return ResultVoUtil.success();
|
|
|
}
|
|
|
|
|
|
-
|
|
|
public ResultVo<List<SheetOverview>> advanceSearch(AdvanceSearchParam param) {
|
|
|
return ResultVoUtil.success(dao.advanceSearch(param));
|
|
|
}
|