|
@@ -292,103 +292,98 @@ public class CaseFrontSheetService {
|
|
|
public synchronized ResultVo<List<PureCodeName>> savePatientInfo(OpCaseFrontsheet param) {
|
|
|
CaseFrontsheetMain sheet = param.getSheet();
|
|
|
final String bah = sheet.getBah();
|
|
|
- final Integer times = sheet.getAdmissTimes();
|
|
|
+ final int times = sheet.getAdmissTimes();
|
|
|
dao.writeBaOpLog(param.getOpType(), param.getStaffId(), bah, times);
|
|
|
- log.info("写入病案操作日志, 操作员:{} >>> 住院号:{}, 住院次数:{}, 操作编码:{}",
|
|
|
- param.getStaffId(), bah, times, param.getOpType());
|
|
|
- if (param.getOpType() == 1) {
|
|
|
- log.info("保存病案首页, 操作员:{} >>> 住院号:{}, 住院次数:{}", param.getStaffId(), bah, times);
|
|
|
- dao.updateAPatientMi(sheet);
|
|
|
- dao.updateZyActPatient(bah, times, sheet.getAutopsy(), sheet.getDiagConform1(),
|
|
|
- sheet.getDiagConform2(), sheet.getDiagConform3(), sheet.getDiagConform4(),
|
|
|
- sheet.getDiagConform5(), sheet.getHasSurgery(), sheet.getPathologicDiagStr(),
|
|
|
- sheet.getPathologicDiagCode(), sheet.getClinicDiagCode(), sheet.getClinicDiagStr());
|
|
|
- dao.updateZyInActPatient(bah, times, sheet.getAutopsy(), sheet.getDiagConform1(), sheet.getDiagConform2(),
|
|
|
- sheet.getDiagConform3(), sheet.getDiagConform4(), sheet.getDiagConform5(), sheet.getHasSurgery(),
|
|
|
- sheet.getPathologicDiagStr(), sheet.getPathologicDiagCode(), sheet.getClinicDiagCode(), sheet.getClinicDiagStr());
|
|
|
- dao.updateBatjBa1(sheet);
|
|
|
- dao.updateBatjBa2(sheet);
|
|
|
- dao.deleteOldDisdiag(bah, times);
|
|
|
- if (!sheet.getDisdiagList().isEmpty()) {
|
|
|
- List<CaseFrontsheetDisdiag> diags = sheet.getDisdiagList();
|
|
|
- for (int i = 0; i < diags.size(); i++) {
|
|
|
- CaseFrontsheetDisdiag item = diags.get(i);
|
|
|
- if (StringUtil.isBlank(item.getCode())) {
|
|
|
- break;
|
|
|
- }
|
|
|
- item.setNo(i + 1);
|
|
|
- item.setBah(bah);
|
|
|
- item.setTimes(times);
|
|
|
- dao.writeNewDisdiag(item);
|
|
|
+ return param.getOpType() == 1 ? saveSheet(sheet, bah, times) : signSheet(sheet, bah, times);
|
|
|
+ }
|
|
|
+
|
|
|
+ private ResultVo<List<PureCodeName>> saveSheet(CaseFrontsheetMain sheet, String bah, int times) {
|
|
|
+ dao.updateAPatientMi(sheet);
|
|
|
+ dao.updateZyActPatient(bah, times, sheet.getAutopsy(), sheet.getDiagConform1(),
|
|
|
+ sheet.getDiagConform2(), sheet.getDiagConform3(), sheet.getDiagConform4(),
|
|
|
+ sheet.getDiagConform5(), sheet.getHasSurgery(), sheet.getPathologicDiagStr(),
|
|
|
+ sheet.getPathologicDiagCode(), sheet.getClinicDiagCode(), sheet.getClinicDiagStr());
|
|
|
+ dao.updateZyInActPatient(bah, times, sheet.getAutopsy(), sheet.getDiagConform1(), sheet.getDiagConform2(),
|
|
|
+ sheet.getDiagConform3(), sheet.getDiagConform4(), sheet.getDiagConform5(), sheet.getHasSurgery(),
|
|
|
+ sheet.getPathologicDiagStr(), sheet.getPathologicDiagCode(), sheet.getClinicDiagCode(), sheet.getClinicDiagStr());
|
|
|
+ dao.updateBatjBa1(sheet);
|
|
|
+ dao.updateBatjBa2(sheet);
|
|
|
+ dao.deleteOldDisdiag(bah, times);
|
|
|
+ if (!sheet.getDisdiagList().isEmpty()) {
|
|
|
+ List<CaseFrontsheetDisdiag> diags = sheet.getDisdiagList();
|
|
|
+ for (int i = 0; i < diags.size(); i++) {
|
|
|
+ CaseFrontsheetDisdiag item = diags.get(i);
|
|
|
+ if (StringUtil.isBlank(item.getCode())) {
|
|
|
+ break;
|
|
|
}
|
|
|
+ item.setNo(i + 1);
|
|
|
+ item.setBah(bah);
|
|
|
+ item.setTimes(times);
|
|
|
+ dao.writeNewDisdiag(item);
|
|
|
}
|
|
|
- dao.deleteOldSurgeryRecord(bah, times);
|
|
|
- if (!sheet.getSurgeryList().isEmpty()) {
|
|
|
- List<CaseFrontsheetSurgery> surgeries = sheet.getSurgeryList();
|
|
|
- for (int i = 0; i < surgeries.size(); i++) {
|
|
|
- CaseFrontsheetSurgery item = surgeries.get(i);
|
|
|
- if (StringUtil.isBlank(item.getCode())) {
|
|
|
- break;
|
|
|
- }
|
|
|
- if (null == item.getDate()) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "手术日期不能为空!");
|
|
|
- }
|
|
|
- item.setNo(i + 1);
|
|
|
- item.setBah(bah);
|
|
|
- item.setTimes(times);
|
|
|
- dao.writeNewZySurgeryRecord(item);
|
|
|
+ }
|
|
|
+ dao.deleteOldSurgeryRecord(bah, times);
|
|
|
+ if (!sheet.getSurgeryList().isEmpty()) {
|
|
|
+ List<CaseFrontsheetSurgery> surgeries = sheet.getSurgeryList();
|
|
|
+ for (int i = 0; i < surgeries.size(); i++) {
|
|
|
+ CaseFrontsheetSurgery item = surgeries.get(i);
|
|
|
+ if (StringUtil.isBlank(item.getCode())) {
|
|
|
+ break;
|
|
|
}
|
|
|
- }
|
|
|
- return ResultVoUtil.success();
|
|
|
- } else {
|
|
|
- log.info("签收病案首页, 操作员:{} >>> 住院号:{}, 住院次数:{}", param.getStaffId(), bah, times);
|
|
|
- if (userDao.getUserRoles(TokenUtil.getTokenUserId()).contains(7)) {
|
|
|
- if (isLateSubmit(sheet.getDismissDate()) > 8) {
|
|
|
- sheet.setLateFlag(1);
|
|
|
- } else {
|
|
|
- sheet.setLateFlag(0);
|
|
|
+ if (null == item.getDate()) {
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "手术日期不能为空!");
|
|
|
}
|
|
|
- dao.updateZyFileStatus(1, bah, times);
|
|
|
- dao.updateZyInFileStatus(1, bah, times);
|
|
|
- dao.updateLateSubmitFlag(sheet.getLateFlag(), bah, times);
|
|
|
- //插入数据 SignDate 签收日期 在点击签收后 向数据库中插入
|
|
|
- sheet.setSignDate(new Date());
|
|
|
- sheet.setFileStatus(1);
|
|
|
- //判断是否已经插入过了
|
|
|
- Integer fileStatus = dao.selectFileStatus(sheet.getBah(), sheet.getAdmissTimes());
|
|
|
- if (null == fileStatus) {
|
|
|
- //在t_case_frontsheet_main表中插入 主体的内容
|
|
|
- dao.insert(sheet);
|
|
|
- //循环插主要的诊断
|
|
|
- for (CaseFrontsheetDisdiag caseFrontsheetDisdiag : sheet.getDisdiagList()) {
|
|
|
- caseFrontsheetDisdiag.setBah(sheet.getBah());
|
|
|
- caseFrontsheetDisdiag.setTimes(sheet.getAdmissTimes());
|
|
|
- if (caseFrontsheetDisdiag.getNo() != null) {
|
|
|
- createdDao.insert(caseFrontsheetDisdiag);
|
|
|
- }
|
|
|
- }
|
|
|
- //循环插入做过的手术
|
|
|
- for (CaseFrontsheetSurgery caseFrontsheetSurgery : sheet.getSurgeryList()) {
|
|
|
- caseFrontsheetSurgery.setBah(sheet.getBah());
|
|
|
- caseFrontsheetSurgery.setTimes(sheet.getAdmissTimes());
|
|
|
- if (caseFrontsheetSurgery.getNo() != null) {
|
|
|
- basDao.insert(caseFrontsheetSurgery);
|
|
|
- }
|
|
|
- }
|
|
|
- return ResultVoUtil.success();
|
|
|
+ item.setNo(i + 1);
|
|
|
+ item.setBah(bah);
|
|
|
+ item.setTimes(times);
|
|
|
+ dao.writeNewZySurgeryRecord(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return ResultVoUtil.success();
|
|
|
+ }
|
|
|
+
|
|
|
+ private ResultVo<List<PureCodeName>> signSheet(CaseFrontsheetMain sheet, String bah, int times) {
|
|
|
+ if (userDao.getUserRoles(TokenUtil.getTokenUserId()).contains(7)) {
|
|
|
+ if (isLateSubmit(sheet.getDismissDate()) > 8) {
|
|
|
+ sheet.setLateFlag(1);
|
|
|
+ } else {
|
|
|
+ sheet.setLateFlag(0);
|
|
|
+ }
|
|
|
+ dao.updateZyFileStatus(1, bah, times);
|
|
|
+ dao.updateZyInFileStatus(1, bah, times);
|
|
|
+ dao.updateLateSubmitFlag(sheet.getLateFlag(), bah, times);
|
|
|
+ //插入数据 SignDate 签收日期 在点击签收后 向数据库中插入
|
|
|
+ sheet.setSignDate(new Date());
|
|
|
+ sheet.setFileStatus(1);
|
|
|
+ //判断是否已经插入过了
|
|
|
+ Integer fileStatus = dao.selectFileStatus(sheet.getBah(), sheet.getAdmissTimes());
|
|
|
+ if (null != fileStatus && fileStatus == 1) {
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请勿重复签收 ( ˉ ⌓ ˉ ๑)");
|
|
|
+ }
|
|
|
+ //在t_case_frontsheet_main表中插入 主体的内容
|
|
|
+ dao.insert(sheet);
|
|
|
+ //循环插主要的诊断
|
|
|
+ for (CaseFrontsheetDisdiag caseFrontsheetDisdiag : sheet.getDisdiagList()) {
|
|
|
+ caseFrontsheetDisdiag.setBah(sheet.getBah());
|
|
|
+ caseFrontsheetDisdiag.setTimes(sheet.getAdmissTimes());
|
|
|
+ if (caseFrontsheetDisdiag.getNo() != null) {
|
|
|
+ createdDao.insert(caseFrontsheetDisdiag);
|
|
|
}
|
|
|
- if (0 == fileStatus) {
|
|
|
- dao.updateFileStatus(sheet.getBah(), sheet.getAdmissTimes(), 1);
|
|
|
- return ResultVoUtil.success();
|
|
|
+ }
|
|
|
+ //循环插入做过的手术
|
|
|
+ for (CaseFrontsheetSurgery caseFrontsheetSurgery : sheet.getSurgeryList()) {
|
|
|
+ caseFrontsheetSurgery.setBah(sheet.getBah());
|
|
|
+ caseFrontsheetSurgery.setTimes(sheet.getAdmissTimes());
|
|
|
+ if (caseFrontsheetSurgery.getNo() != null) {
|
|
|
+ basDao.insert(caseFrontsheetSurgery);
|
|
|
}
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请勿重复签收 ( ˉ ⌓ ˉ ๑)");
|
|
|
}
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您没有签收首页的权限。");
|
|
|
+ return ResultVoUtil.success();
|
|
|
}
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您没有签收首页的权限。");
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
-
|
|
|
public synchronized ResultVo<String> unArchiveBa(OpCaseFrontsheet param) {
|
|
|
CaseFrontsheetMain sheet = param.getSheet();
|
|
|
if (sheet.getFileStatus() == 2) {
|
|
@@ -397,6 +392,14 @@ public class CaseFrontSheetService {
|
|
|
if (sheet.getFileStatus() == 0) {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "未签收的病案首页无需解除签收!");
|
|
|
}
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("bah", sheet.getBah());
|
|
|
+ map.put("admiss_times", sheet.getAdmissTimes());
|
|
|
+ dao.deleteByMap(map);
|
|
|
+ map.put("times", map.remove("admiss_times"));
|
|
|
+ createdDao.deleteByMap(map);
|
|
|
+ basDao.deleteByMap(map);
|
|
|
+
|
|
|
dao.updateZyFileStatus(0, sheet.getBah(), sheet.getAdmissTimes());
|
|
|
dao.updateZyInFileStatus(0, sheet.getBah(), sheet.getAdmissTimes());
|
|
|
dao.clearSignDate(sheet.getBah(), sheet.getAdmissTimes());
|
|
@@ -637,39 +640,92 @@ public class CaseFrontSheetService {
|
|
|
return (int) days;
|
|
|
}
|
|
|
|
|
|
- public ResultVo<List<DismissCount>> analyzeDismissCount(String month) {
|
|
|
+ public ResultVo<List<DismissCount>> analyzeDismissCount(Integer type, String month) {
|
|
|
String begntime = month + "-01 00:00:00.000";
|
|
|
String endtime = DateUtil.getMonthEndtime(month);
|
|
|
- List<TempDismissCount> templist = dao.selectDismissCount(begntime, endtime);
|
|
|
- Map<String, DismissCount> map = new HashMap<>();
|
|
|
- for (TempDismissCount item : templist) {
|
|
|
- if (map.containsKey(item.getDeptCode())) {
|
|
|
- DismissCount count = map.get(item.getDeptCode());
|
|
|
- count.setDismissCount(count.getDismissCount() + item.getDismissCount());
|
|
|
- if (item.getFileStatus() == 1) {
|
|
|
- count.setSignedCount(count.getSignedCount() + item.getDismissCount());
|
|
|
+ List<DismissCount> list;
|
|
|
+ if (type == 1) {
|
|
|
+ List<TempDismissCount> templist = dao.selectDismissCount(begntime, endtime);
|
|
|
+ Map<String, DismissCount> map = new HashMap<>();
|
|
|
+ for (TempDismissCount item : templist) {
|
|
|
+ if (map.containsKey(item.getDeptCode())) {
|
|
|
+ DismissCount count = map.get(item.getDeptCode());
|
|
|
+ count.setDismissCount(count.getDismissCount() + item.getDismissCount());
|
|
|
+ if (item.getFileStatus() == 1) {
|
|
|
+ count.setSignedCount(count.getSignedCount() + item.getDismissCount());
|
|
|
+ } else {
|
|
|
+ count.setUnsignCount(count.getUnsignCount() + item.getDismissCount());
|
|
|
+ }
|
|
|
} else {
|
|
|
- count.setUnsignCount(count.getUnsignCount() + item.getDismissCount());
|
|
|
+ DismissCount dismissCount = new DismissCount();
|
|
|
+ dismissCount.setDeptName(redis.getDeptName(item.getDeptCode()));
|
|
|
+ dismissCount.setDismissCount(item.getDismissCount());
|
|
|
+ if (item.getFileStatus() == 1) {
|
|
|
+ dismissCount.setSignedCount(item.getDismissCount());
|
|
|
+ dismissCount.setUnsignCount(0);
|
|
|
+ } else {
|
|
|
+ dismissCount.setUnsignCount(item.getDismissCount());
|
|
|
+ dismissCount.setSignedCount(0);
|
|
|
+ }
|
|
|
+ map.put(item.getDeptCode(), dismissCount);
|
|
|
}
|
|
|
- } else {
|
|
|
- DismissCount dismissCount = new DismissCount();
|
|
|
- dismissCount.setDeptName(redis.getDeptName(item.getDeptCode()));
|
|
|
- dismissCount.setDismissCount(item.getDismissCount());
|
|
|
- if (item.getFileStatus() == 1) {
|
|
|
- dismissCount.setSignedCount(item.getDismissCount());
|
|
|
- dismissCount.setUnsignCount(0);
|
|
|
- } else {
|
|
|
- dismissCount.setUnsignCount(item.getDismissCount());
|
|
|
- dismissCount.setSignedCount(0);
|
|
|
+ }
|
|
|
+ list = new ArrayList<>();
|
|
|
+ for (Map.Entry<String, DismissCount> entry : map.entrySet()) {
|
|
|
+ list.add(entry.getValue());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ list = dao.selectDismissDetailCount(begntime, endtime);
|
|
|
+ if (type == 3) {
|
|
|
+ list.removeIf(item -> item.getDeadOrder() == 0);
|
|
|
+ }
|
|
|
+ for (DismissCount item : list) {
|
|
|
+ if (StringUtil.equalsIgnoreNull(item.getZkWard(), item.getAdmissDept())) {
|
|
|
+ item.setZkWard(null);
|
|
|
}
|
|
|
- map.put(item.getDeptCode(), dismissCount);
|
|
|
+ item.setDisDept(redis.getDeptName(item.getDisDept()));
|
|
|
+ item.setBlfx(filterBlfx(item.getBlfx()));
|
|
|
+ item.setAdmissDept(redis.getDeptName(item.getAdmissDept()));
|
|
|
+ item.setZkWard(redis.getDeptName(item.getZkWard()));
|
|
|
+ item.setKzr(redis.getEmployeeName(item.getKzr()));
|
|
|
+ item.setZzys(redis.getEmployeeName(item.getZzys()));
|
|
|
+ item.setZyys(redis.getEmployeeName(item.getZyys()));
|
|
|
+ item.setFdcrb(filterFdcrb(item.getFdcrb()));
|
|
|
}
|
|
|
}
|
|
|
- List<DismissCount> list = new ArrayList<>();
|
|
|
- for (Map.Entry<String, DismissCount> entry : map.entrySet()) {
|
|
|
- list.add(entry.getValue());
|
|
|
- }
|
|
|
return ResultVoUtil.success(list);
|
|
|
}
|
|
|
|
|
|
+ private String filterBlfx(String val) {
|
|
|
+ switch (val) {
|
|
|
+ case "1":
|
|
|
+ return "A";
|
|
|
+ case "2":
|
|
|
+ return "B";
|
|
|
+ case "3":
|
|
|
+ return "C";
|
|
|
+ case "4":
|
|
|
+ return "D";
|
|
|
+ default:
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private String filterFdcrb(String val) {
|
|
|
+ switch (val) {
|
|
|
+ case "1":
|
|
|
+ return "甲类";
|
|
|
+ case "2":
|
|
|
+ return "乙类";
|
|
|
+ case "3":
|
|
|
+ return "丙类";
|
|
|
+ default:
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void increaseDiagWeight(String code) {
|
|
|
+ dao.increaseDiagWeight(code);
|
|
|
+ }
|
|
|
+
|
|
|
}
|