|
@@ -21,7 +21,7 @@ import thyyxxk.webserver.entity.ResultVo;
|
|
|
import thyyxxk.webserver.entity.api.forpowersi.drgdip.frontsheetqualitycheck.QualityCheckParams;
|
|
|
import thyyxxk.webserver.entity.casefrontsheet.*;
|
|
|
import thyyxxk.webserver.entity.casefrontsheet.request.*;
|
|
|
-import thyyxxk.webserver.entity.casefrontsheet.response.SheetOverviewForBas;
|
|
|
+import thyyxxk.webserver.entity.casefrontsheet.state.State;
|
|
|
import thyyxxk.webserver.entity.covid.Region;
|
|
|
import thyyxxk.webserver.entity.dictionary.CodeName;
|
|
|
import thyyxxk.webserver.entity.dictionary.HisWjwMatchEntity;
|
|
@@ -141,89 +141,88 @@ public class CaseFrontSheetMainService {
|
|
|
* @param param 查询的条件
|
|
|
* @return 返回数据
|
|
|
*/
|
|
|
- public ResultVo<SheetOverviewForBas> getOutPatientForBas(DismissedSheetInquiry param) {
|
|
|
- SheetOverviewForBas response = new SheetOverviewForBas();
|
|
|
- if (StringUtil.notBlank(param.getWard())) {
|
|
|
- int cd = dao.getCDBlfxCount(param.getWard());
|
|
|
- int all = dao.getAllDisPatientCount(param.getWard());
|
|
|
- if (cd == 0 || all == 0) {
|
|
|
- response.setCdPercentage("0.00%");
|
|
|
- } else {
|
|
|
- response.setCdPercentage(DecimalUtil.getPercent(cd, all));
|
|
|
- }
|
|
|
- }
|
|
|
- if (StringUtil.notBlank(param.getStart())) {
|
|
|
- param.setStart(param.getStart() + " 00:00:00");
|
|
|
- }
|
|
|
- if (StringUtil.notBlank(param.getEnd())) {
|
|
|
- param.setEnd(param.getEnd() + " 23:59:59");
|
|
|
+ public ResultVo<List<SheetOverview>> basOutPatients(DismissedSheetInquiry param) {
|
|
|
+ if (StringUtil.isBlank(param.getStart()) || StringUtil.isBlank(param.getEnd())) {
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "日期范围不能为空。");
|
|
|
}
|
|
|
+ param.setStart(param.getStart() + " 00:00:00");
|
|
|
+ param.setEnd(param.getEnd() + " 23:59:59");
|
|
|
+
|
|
|
List<SheetOverview> baseList;
|
|
|
List<SheetOverview> seedList;
|
|
|
+
|
|
|
if (StringUtil.notBlank(param.getBah())) {
|
|
|
baseList = basDao.selectPatientsFromSignedBase(param);
|
|
|
+ if (Objects.equals(param.getFileStatus(), State.FileStatus.SIGNED)) {
|
|
|
+ if (baseList.isEmpty()) {
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST,
|
|
|
+ "没有找到此患者的已归档病案。");
|
|
|
+ }
|
|
|
+ if (!Objects.equals(param.getLateFlag(), State.LateFlag.ALL)) {
|
|
|
+ baseList.removeIf(item -> !Objects.equals(item.getLateFlag(), param.getLateFlag()));
|
|
|
+ }
|
|
|
+ return ResultVoUtil.success(baseList);
|
|
|
+ }
|
|
|
+
|
|
|
seedList = basDao.selectPatientsForBasByBah(param);
|
|
|
baseList = removeDuplicateData(baseList, seedList);
|
|
|
if (baseList.isEmpty()) {
|
|
|
- String describe = param.getFileStatus() == 0 ? "未归档" : "已归档";
|
|
|
return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST,
|
|
|
- "没有找到此患者的" + describe + "病案。");
|
|
|
+ "没有找到此患者的未归档病案。");
|
|
|
}
|
|
|
- if (param.getLateFlag() != 3) {
|
|
|
- baseList.removeIf(item -> !item.getLateFlag().equals(param.getLateFlag()));
|
|
|
+ if (!Objects.equals(param.getLateFlag(), State.LateFlag.ALL)) {
|
|
|
+ baseList.removeIf(item -> !Objects.equals(item.getLateFlag(), param.getLateFlag()));
|
|
|
}
|
|
|
- response.setList(baseList);
|
|
|
- return ResultVoUtil.success(response);
|
|
|
+ return ResultVoUtil.success(baseList);
|
|
|
}
|
|
|
if (StringUtil.notBlank(param.getWard())) {
|
|
|
baseList = basDao.selectPatientsForBasByWard2(param);
|
|
|
- seedList = basDao.selectPatientsForBasByWard(param);
|
|
|
- baseList = removeDuplicateData(baseList, seedList);
|
|
|
- if (param.getLateFlag() != 3) {
|
|
|
- baseList.removeIf(item -> !item.getLateFlag().equals(param.getLateFlag()));
|
|
|
+ if (param.getFileStatus() == State.FileStatus.UNSIGNED) {
|
|
|
+ seedList = basDao.selectPatientsForBasByWard(param);
|
|
|
+ baseList = removeDuplicateData(baseList, seedList);
|
|
|
+ }
|
|
|
+ if (!Objects.equals(param.getLateFlag(), State.LateFlag.ALL)) {
|
|
|
+ baseList.removeIf(item -> !Objects.equals(item.getLateFlag(), param.getLateFlag()));
|
|
|
}
|
|
|
- response.setList(baseList);
|
|
|
- return ResultVoUtil.success(response);
|
|
|
+ return ResultVoUtil.success(baseList);
|
|
|
}
|
|
|
baseList = basDao.selectPatientsForBasByFileStatus2(param);
|
|
|
- seedList = basDao.selectPatientsForBasByFileStatus(param);
|
|
|
- baseList = removeDuplicateData(baseList, seedList);
|
|
|
- if (param.getLateFlag() != 3) {
|
|
|
- baseList.removeIf(item -> !item.getLateFlag().equals(param.getLateFlag()));
|
|
|
+ if (param.getFileStatus() == State.FileStatus.UNSIGNED) {
|
|
|
+ seedList = basDao.selectPatientsForBasByFileStatus(param);
|
|
|
+ baseList = removeDuplicateData(baseList, seedList);
|
|
|
}
|
|
|
- response.setList(baseList);
|
|
|
- return ResultVoUtil.success(response);
|
|
|
+ if (!Objects.equals(param.getLateFlag(), State.LateFlag.ALL)) {
|
|
|
+ baseList.removeIf(item -> !Objects.equals(item.getLateFlag(), param.getLateFlag()));
|
|
|
+ }
|
|
|
+ return ResultVoUtil.success(baseList);
|
|
|
}
|
|
|
|
|
|
private List<SheetOverview> removeDuplicateData(List<SheetOverview> baseList,
|
|
|
- List<SheetOverview> seedList) {
|
|
|
+ List<SheetOverview> seedList) {
|
|
|
if (baseList.isEmpty()) {
|
|
|
return seedList;
|
|
|
}
|
|
|
if (seedList.isEmpty()) {
|
|
|
return baseList;
|
|
|
}
|
|
|
- Map<String, Integer> map = new HashMap<>(seedList.size());
|
|
|
- for (SheetOverview overview : seedList) {
|
|
|
+ List<String> keys = new ArrayList<>();
|
|
|
+ for (SheetOverview overview : baseList) {
|
|
|
String key = overview.getBah().trim() + "-" + overview.getTimes();
|
|
|
- map.put(key, 1);
|
|
|
+ keys.add(key);
|
|
|
}
|
|
|
- baseList.removeIf(item -> map.containsKey(item.getBah().trim() + "-" + item.getTimes()));
|
|
|
+ seedList.removeIf(item -> keys.contains(item.getBah().trim() + "-" + item.getTimes()));
|
|
|
baseList.addAll(seedList);
|
|
|
return baseList;
|
|
|
}
|
|
|
|
|
|
- public ResultVo<CaseFrontsheetMain> getPatientInfo(SheetOverview overview) {
|
|
|
+ public CaseFrontsheetMain getPatientInfo(SheetOverview overview) {
|
|
|
String bah = overview.getBah();
|
|
|
Integer times = overview.getTimes();
|
|
|
- if (overview.getRenew()) {
|
|
|
- dao.deleteOldSheet(bah, times);
|
|
|
- }
|
|
|
StandardAddressMember standardAddressMember = getStandardAddressMember(bah);
|
|
|
- CaseFrontsheetMain sheet = dao.selectSignedSheetMain(bah, times);
|
|
|
+ CaseFrontsheetMain sheet = dao.selectStoredSheetMain(bah, times);
|
|
|
if (null != sheet) {
|
|
|
- sheet.setDisdiagList(getSheetDisDiags(bah, times, 1));
|
|
|
- sheet.setSurgeryList(getSheetSurgeries(bah, times, 1));
|
|
|
+ sheet.setDisdiagList(getSheetDisDiags(bah, times, State.FileStatus.SIGNED));
|
|
|
+ sheet.setSurgeryList(getSheetSurgeries(bah, times, State.FileStatus.SIGNED));
|
|
|
if (null != standardAddressMember) {
|
|
|
sheet.setStandardAddress(standardAddressMember.makeStandardAddress());
|
|
|
sheet.setLivePlaceCombo(standardAddressMember.makeAddressCombo() + sheet.getLivePlace());
|
|
@@ -254,17 +253,21 @@ public class CaseFrontSheetMainService {
|
|
|
sheet.setAdmissDays(0 == days ? "1" : String.valueOf(days));
|
|
|
}
|
|
|
autoFillPart(sheet);
|
|
|
- return ResultVoUtil.success(sheet);
|
|
|
+ return sheet;
|
|
|
}
|
|
|
- int flag = overview.getInOutFlag();
|
|
|
- if (flag == 2) {
|
|
|
- flag = dao.selectActCount(bah, times) > 0 ? 1 : 2;
|
|
|
+ int inHospital = overview.getInOutFlag();
|
|
|
+ if (inHospital == State.InHospital.NO) {
|
|
|
+ if (dao.selectActCount(bah, times) > 0) {
|
|
|
+ inHospital = State.InHospital.YES;
|
|
|
+ }
|
|
|
}
|
|
|
sheet = dao.getAPatientMi(bah);
|
|
|
- CaseFrontsheetMain sheet1 = flag == 1 ? dao.getZyActPatient("zy_actpatient", "yz_act_order", bah, times) :
|
|
|
+ CaseFrontsheetMain sheet1 = inHospital == State.InHospital.YES ?
|
|
|
+ dao.getZyActPatient("zy_actpatient", "yz_act_order", bah, times) :
|
|
|
dao.getZyActPatient("zy_inactpatient", "yz_inact_order", bah, times);
|
|
|
if (null == sheet1) {
|
|
|
- sheet1 = flag == 1 ? dao.getZyActPatient("zy_inactpatient", "yz_inact_order", bah, times) :
|
|
|
+ sheet1 = inHospital == State.InHospital.YES ?
|
|
|
+ dao.getZyActPatient("zy_inactpatient", "yz_inact_order", bah, times) :
|
|
|
dao.getZyActPatient("zy_actpatient", "yz_act_order", bah, times);
|
|
|
}
|
|
|
sheet.setAge(DateUtil.calculateAge(sheet.getBirthDate(), sheet1.getAdmissDate()));
|
|
@@ -282,7 +285,7 @@ public class CaseFrontSheetMainService {
|
|
|
final int hasInfant = dao.getInfant(bah, times);
|
|
|
sheet1.setHasInfant(String.valueOf(hasInfant));
|
|
|
if (null == sheet1.getDismissDate()) {
|
|
|
- final Date dismissDate = flag == 1 ?
|
|
|
+ final Date dismissDate = inHospital == State.InHospital.YES ?
|
|
|
dao.getDismissDateFromYzActOrder("yz_inact_order", bah, times)
|
|
|
: dao.getDismissDateFromYzActOrder("yz_act_order", bah, times);
|
|
|
sheet1.setDismissDate(dismissDate);
|
|
@@ -293,7 +296,7 @@ public class CaseFrontSheetMainService {
|
|
|
sheet1.getAdmissDept(), sheet1.getAdmissWard());
|
|
|
log.info("insert batjBa1>>> " + bah + ", " + times);
|
|
|
}
|
|
|
- CaseFrontsheetMain sheet3 = flag == 1 ? dao.getBatjBa2ForInPatient(bah, times) :
|
|
|
+ CaseFrontsheetMain sheet3 = inHospital == 1 ? dao.getBatjBa2ForInPatient(bah, times) :
|
|
|
dao.getBatjBa2ForOutPatient(bah, times);
|
|
|
if (sheet3 == null && dao.isBatjBa2Exist(bah, times) == 0) {
|
|
|
dao.createBatjBa2(bah, times);
|
|
@@ -328,7 +331,7 @@ public class CaseFrontSheetMainService {
|
|
|
}
|
|
|
sheet.setSurgicalFee(DecimalUtil.add(sheet.getAnesthetizeFee(), sheet.getSurgeryFee()));
|
|
|
autoFillPart(sheet);
|
|
|
- return ResultVoUtil.success(sheet);
|
|
|
+ return sheet;
|
|
|
}
|
|
|
|
|
|
private void autoFillPart(CaseFrontsheetMain sheet) {
|
|
@@ -402,7 +405,7 @@ public class CaseFrontSheetMainService {
|
|
|
}
|
|
|
|
|
|
private List<CaseFrontsheetDisdiag> getSheetDisDiags(String bah, int times, int status) {
|
|
|
- List<CaseFrontsheetDisdiag> disdiags = status == 1 ?
|
|
|
+ List<CaseFrontsheetDisdiag> disdiags = status == State.FileStatus.SIGNED ?
|
|
|
dao.selectSignedSheetDiags(bah, times) : dao.getDisdiags(bah, times);
|
|
|
if (disdiags.isEmpty()) {
|
|
|
JSONObject emrPatientData = emrService.getEmrPatientData(bah, times);
|
|
@@ -430,7 +433,7 @@ public class CaseFrontSheetMainService {
|
|
|
}
|
|
|
|
|
|
private List<CaseFrontsheetSurgery> getSheetSurgeries(String bah, int times, int status) {
|
|
|
- List<CaseFrontsheetSurgery> surgeries = status == 1 ?
|
|
|
+ List<CaseFrontsheetSurgery> surgeries = status == State.FileStatus.SIGNED ?
|
|
|
dao.selectSignedSheetSurgeries(bah, times) : dao.getSurgeries(bah, times);
|
|
|
if (surgeries.isEmpty()) {
|
|
|
JSONArray oprtList = emrService.getPatientSurgery(bah, times);
|
|
@@ -580,33 +583,31 @@ public class CaseFrontSheetMainService {
|
|
|
private ResultVo<List<CodeName>> archiveSheet(CaseFrontsheetMain sheet) {
|
|
|
String staff = TokenUtil.getInstance().getTokenUserId();
|
|
|
List<Integer> roles = userDao.getUserRoles(staff);
|
|
|
- if (roles.contains(7) || roles.contains(1)) {
|
|
|
- String bah = sheet.getBah();
|
|
|
- int times = sheet.getAdmissTimes();
|
|
|
- int lateFlag = isLateSubmit(sheet.getDismissDate()) ? 1 : 0;
|
|
|
- sheet.setLateFlag(lateFlag);
|
|
|
- //插入数据 SignDate 签收日期 在点击签收后 向数据库中插入
|
|
|
- sheet.setSignDate(new Date());
|
|
|
- sheet.setSignStaff(staff);
|
|
|
- sheet.setFileStatus(1);
|
|
|
- //判断是否已经插入过了
|
|
|
- Integer fileStatus = dao.selectFileStatus(sheet.getBah(), sheet.getAdmissTimes());
|
|
|
- if (null == fileStatus) {
|
|
|
- insertSheetData(sheet);
|
|
|
- basDao.updateActFileStatus(bah, times, 1);
|
|
|
- return ResultVoUtil.success();
|
|
|
- }
|
|
|
- if (fileStatus == 1) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请勿重复签收 ( ˉ ⌓ ˉ ๑)");
|
|
|
- }
|
|
|
- dao.updateSignStatus(bah, times, lateFlag, staff);
|
|
|
- basDao.updateActFileStatus(bah, times, 1);
|
|
|
+ if (!roles.contains(7) && !roles.contains(1)) {
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您没有签收首页的权限。");
|
|
|
+ }
|
|
|
+ String bah = sheet.getBah();
|
|
|
+ int times = sheet.getAdmissTimes();
|
|
|
+ sheet.setSignDate(new Date());
|
|
|
+ sheet.setSignStaff(staff);
|
|
|
+ sheet.setFileStatus(State.FileStatus.SIGNED);
|
|
|
+ //判断是否已经签收过了
|
|
|
+ Integer fileStatus = dao.selectFileStatus(sheet.getBah(), sheet.getAdmissTimes());
|
|
|
+ if (!Objects.equals(fileStatus, State.FileStatus.SIGNED)) {
|
|
|
+ insertSheetData(sheet);
|
|
|
+ basDao.updateActFileStatus(bah, times, State.FileStatus.SIGNED);
|
|
|
return ResultVoUtil.success();
|
|
|
}
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您没有签收首页的权限。");
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请勿重复签收。");
|
|
|
}
|
|
|
|
|
|
private void insertSheetData(CaseFrontsheetMain sheet) {
|
|
|
+ Integer lateFlag = dao.selectLateFlag(sheet.getBah(), sheet.getAdmissTimes());
|
|
|
+ if (null == lateFlag) {
|
|
|
+ lateFlag = calculateLateState(sheet.getDismissDate());
|
|
|
+ }
|
|
|
+ sheet.setLateFlag(lateFlag);
|
|
|
+ sheet.setSignStaff(dao.selectSignStaff(sheet.getBah(), sheet.getAdmissTimes()));
|
|
|
dao.deleteOldSheet(sheet.getBah(), sheet.getAdmissTimes());
|
|
|
//在t_case_frontsheet_main表中插入 主体的内容
|
|
|
dao.insert(sheet);
|
|
@@ -639,18 +640,12 @@ public class CaseFrontSheetMainService {
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public synchronized ResultVo<String> unArchiveSheet(OpCaseFrontsheet param) {
|
|
|
CaseFrontsheetMain sheet = param.getSheet();
|
|
|
- if (sheet.getFileStatus() == 0) {
|
|
|
+ if (sheet.getFileStatus() == State.FileStatus.UNSIGNED) {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "未签收的病案首页无需解除签收!");
|
|
|
}
|
|
|
- dao.deleteOldSheet(sheet.getBah(), sheet.getAdmissTimes());
|
|
|
- Map<String, Object> map = new HashMap<>();
|
|
|
- map.put("bah", sheet.getBah());
|
|
|
- map.put("times", sheet.getAdmissTimes());
|
|
|
- createdDao.deleteByMap(map);
|
|
|
- basDao.deleteByMap(map);
|
|
|
+ dao.updateSignStateToUnsigned(sheet.getBah(), sheet.getAdmissTimes());
|
|
|
log.info("解除签收状态, 操作员:{} >>> 住院号:{}, 住院次数:{}",
|
|
|
param.getStaffId(), sheet.getBah(), sheet.getAdmissTimes());
|
|
|
- basDao.updateActFileStatus(sheet.getBah(), sheet.getAdmissTimes(), 0);
|
|
|
dao.writeBaOpLog(param.getOpType(), param.getStaffId(), sheet.getBah(), sheet.getAdmissTimes());
|
|
|
log.info("写入病案操作日志, 操作员:{} >>> 住院号:{}, 住院次数:{}, 操作编码:{}",
|
|
|
param.getStaffId(), sheet.getBah(), sheet.getAdmissTimes(), param.getOpType());
|
|
@@ -710,7 +705,7 @@ public class CaseFrontSheetMainService {
|
|
|
public ResultVo<Map<String, List<CodeName>>> printVerification(OpCaseFrontsheet param) {
|
|
|
CaseFrontsheetMain sheet = param.getSheet();
|
|
|
Integer status = dao.selectFileStatus(sheet.getBah(), sheet.getAdmissTimes());
|
|
|
- if (null != status && status == 1) {
|
|
|
+ if (null != status && status == State.FileStatus.SIGNED) {
|
|
|
List<Integer> roles = dao.getUserRoles(param.getStaffId());
|
|
|
if (roles.contains(60)) {
|
|
|
return ResultVoUtil.success();
|
|
@@ -744,15 +739,16 @@ public class CaseFrontSheetMainService {
|
|
|
String bah = sheet.getBah();
|
|
|
int times = sheet.getAdmissTimes();
|
|
|
Integer fileStatus = dao.selectFileStatus(bah, times);
|
|
|
- if (null == fileStatus || 0 == fileStatus) {
|
|
|
- sheet.setFileStatus(0);
|
|
|
+ if (null == fileStatus || fileStatus == State.FileStatus.UNSIGNED) {
|
|
|
+ sheet.setFileStatus(State.FileStatus.UNSIGNED);
|
|
|
insertSheetData(sheet);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public ResultVo<List<CodeName>> saveVerify(OpCaseFrontsheet info) {
|
|
|
CaseFrontsheetMain sheet = info.getSheet();
|
|
|
- if (sheet.getFileStatus() == 1 && !userDao.getUserRoles(TokenUtil.getInstance().getTokenUserId()).contains(7)) {
|
|
|
+ Integer status = dao.selectFileStatus(sheet.getBah(), sheet.getAdmissTimes());
|
|
|
+ if (null != status && status == State.FileStatus.SIGNED) {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "已签收的病案首页无法保存,如需保存,请联系病案室对此病案解除签收。");
|
|
|
}
|
|
|
sheet.setAddressMember(getStandardAddress(sheet.getStandardAddress()));
|
|
@@ -812,7 +808,7 @@ public class CaseFrontSheetMainService {
|
|
|
if (StringUtil.isBlank(view.getBah()) || null == view.getTimes() || null == view.getInOutFlag()) {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "住院号、住院次数、在院状态不能为空。");
|
|
|
}
|
|
|
- CaseFrontsheetMain sheet = getPatientInfo(view).getData();
|
|
|
+ CaseFrontsheetMain sheet = getPatientInfo(view);
|
|
|
if (null == sheet) {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "没有查询到病案数据。");
|
|
|
}
|
|
@@ -890,9 +886,9 @@ public class CaseFrontSheetMainService {
|
|
|
return ResultVoUtil.success("有对照的非手术分值:" + disefamilyGrade.getNoneOprnGrade());
|
|
|
}
|
|
|
|
|
|
- private boolean isLateSubmit(Date dismissDate) {
|
|
|
+ private Integer calculateLateState(Date dismissDate) {
|
|
|
long days = (System.currentTimeMillis() - dismissDate.getTime()) / 1000 / (3600 * 24);
|
|
|
- return (int) days > 7;
|
|
|
+ return (int) days > 6 ? State.LateFlag.LATE : State.LateFlag.NOT_LATE;
|
|
|
}
|
|
|
|
|
|
public void increaseDiagWeight(String code) {
|
|
@@ -989,4 +985,86 @@ public class CaseFrontSheetMainService {
|
|
|
}
|
|
|
return ResultVoUtil.success();
|
|
|
}
|
|
|
+
|
|
|
+ public String markDuplicate(MarkStateRequest request) {
|
|
|
+ Integer fileStatus = dao.selectFileStatus(request.getBah(), request.getTimes());
|
|
|
+ if (null == fileStatus || fileStatus == State.FileStatus.UNSIGNED) {
|
|
|
+ return "未签收的病案不可标记复印。";
|
|
|
+ }
|
|
|
+ if (StringUtil.isBlank(request.getVisitStaff())) {
|
|
|
+ return "请填写来访人员。";
|
|
|
+ }
|
|
|
+ request.setOpStaff(TokenUtil.getInstance().getTokenUserId());
|
|
|
+ int insert = dao.executeDuplicate(request);
|
|
|
+ if (insert == 0) {
|
|
|
+ return "操作失败,无法向数据库插入记录。";
|
|
|
+ }
|
|
|
+ return "OK";
|
|
|
+ }
|
|
|
+
|
|
|
+ public String markClosedown(MarkStateRequest request) {
|
|
|
+ Integer fileStatus = dao.selectFileStatus(request.getBah(), request.getTimes());
|
|
|
+ if (null == fileStatus || fileStatus == State.FileStatus.UNSIGNED) {
|
|
|
+ return "未签收的病案不可标记封存。";
|
|
|
+ }
|
|
|
+ int closedownCount = dao.closedownCount(request.getBah(), request.getTimes());
|
|
|
+ if (closedownCount > 0) {
|
|
|
+ return "已是封存状态,请勿重复封存。";
|
|
|
+ }
|
|
|
+ if (StringUtil.isBlank(request.getVisitStaff())) {
|
|
|
+ return "请填写来访人员。";
|
|
|
+ }
|
|
|
+ request.setOpStaff(TokenUtil.getInstance().getTokenUserId());
|
|
|
+ int insert = dao.executeClosedown(request);
|
|
|
+ if (insert == 0) {
|
|
|
+ return "操作失败,无法向数据库插入记录。";
|
|
|
+ }
|
|
|
+ return "OK";
|
|
|
+ }
|
|
|
+
|
|
|
+ public Map<String, List<SheetOverview>> signedByDateCount(String signDate) {
|
|
|
+ String start = signDate + " 00:00:00.000";
|
|
|
+ String end = signDate + " 23:59:59.999";
|
|
|
+ List<SheetOverview> list = dao.signedListByDate(start, end);
|
|
|
+ Map<String, List<SheetOverview>> map = new HashMap<>();
|
|
|
+ for (SheetOverview overview : list) {
|
|
|
+ String key = overview.getSignStaff() + "-" + overview.getSignStaffName();
|
|
|
+ if (map.containsKey(key)) {
|
|
|
+ map.get(key).add(overview);
|
|
|
+ } else {
|
|
|
+ List<SheetOverview> tempList = new ArrayList<>();
|
|
|
+ tempList.add(overview);
|
|
|
+ map.put(key, tempList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String printVerifyForAutoSign(CaseFrontsheetMain sheet) {
|
|
|
+ Integer status = dao.selectFileStatus(sheet.getBah(), sheet.getAdmissTimes());
|
|
|
+ if (null != status && status == State.FileStatus.SIGNED) {
|
|
|
+ return "OK";
|
|
|
+ }
|
|
|
+ sheet.setAddressMember(getStandardAddress(sheet.getStandardAddress()));
|
|
|
+ ResultVo<List<CodeName>> save = saveSheet(sheet);
|
|
|
+ if (save.getCode() != ExceptionEnum.SUCCESS.getCode()) {
|
|
|
+ return "校验未通过。";
|
|
|
+ }
|
|
|
+ Map<String, List<CodeName>> warnings = beginAnalyzeSheet(sheet,4);
|
|
|
+ if (warnings.get("force").isEmpty()) {
|
|
|
+ return "OK";
|
|
|
+ }
|
|
|
+ return "校验未通过。";
|
|
|
+ }
|
|
|
+
|
|
|
+ public String autoSign(CaseFrontsheetMain sheet) {
|
|
|
+ String bah = sheet.getBah();
|
|
|
+ int times = sheet.getAdmissTimes();
|
|
|
+ sheet.setSignDate(new Date());
|
|
|
+ sheet.setFileStatus(State.FileStatus.SIGNED);
|
|
|
+ sheet.setSignStaff(dao.selectSignStaff(bah, times));
|
|
|
+ insertSheetData(sheet);
|
|
|
+ basDao.updateActFileStatus(bah, times, State.FileStatus.SIGNED);
|
|
|
+ return "OK";
|
|
|
+ }
|
|
|
}
|