|
|
|
@ -103,12 +103,23 @@ public class SdBusinessServiceImpl implements SdBusinessService {
|
|
|
|
|
}
|
|
|
|
|
WsNurseSubmitDTO nurseSubmitDTO = WsNurseSubmitMessageConvert.convert(message.getMessage());
|
|
|
|
|
WsNurseSubmitValidate.verifyNurseSubmitDTO(nurseSubmitDTO);
|
|
|
|
|
List<String> patientIds = tBasicMapper.getPatientIdsByInpatientNoAndTimes(nurseSubmitDTO.getInHospIndexNo(), nurseSubmitDTO.getVisitNo());
|
|
|
|
|
String inHospIndexNo = nurseSubmitDTO.getInHospIndexNo();
|
|
|
|
|
Integer visitNo = nurseSubmitDTO.getVisitNo();
|
|
|
|
|
List<String> patientIds = tBasicMapper.getPatientIdsByInpatientNoAndTimes(inHospIndexNo, visitNo);
|
|
|
|
|
verifyPatientIds(patientIds);
|
|
|
|
|
|
|
|
|
|
if(!isDischargeAndUpdDisDate(patientIds.get(0),nurseSubmitDTO.getInHospIndexNo(), nurseSubmitDTO.getVisitNo())){
|
|
|
|
|
if(!isDischargeAndUpdDisDate(patientIds.get(0), inHospIndexNo, visitNo)){
|
|
|
|
|
throw new BaseException("此患者未出院!");
|
|
|
|
|
}
|
|
|
|
|
// 如果是重症患者,如果没有重症报告的话,不能提交
|
|
|
|
|
if (isIcuRecord(inHospIndexNo, visitNo)) {
|
|
|
|
|
// 更新重症标识
|
|
|
|
|
confirmAndUpdIcuRecordState(inHospIndexNo,visitNo);
|
|
|
|
|
if (!hasIcuFile(patientIds.get(0))) {
|
|
|
|
|
throw new BaseException("重症患者,未采集重症文件,不允许提交!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tBasicMapper.insertOrUpdateNurseSubmitTime(patientIds.get(0), nurseSubmitDTO.getSubmitTime());
|
|
|
|
|
tBasicMapper.insertOrUpdateNurseFileCount(patientIds.get(0), nurseSubmitDTO.getFilesCount());
|
|
|
|
|
log.info("补偿护理任务 patientIds:{} collectId:{}", patientIds, taskConfig.getCollectorIds());
|
|
|
|
@ -129,17 +140,37 @@ public class SdBusinessServiceImpl implements SdBusinessService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据病案,查找是否有icu来源,未作废的文件数量>0
|
|
|
|
|
* @param patientId 病案主键
|
|
|
|
|
* @return 是否有icu来源,未作废的文件数量>0
|
|
|
|
|
*/
|
|
|
|
|
private boolean hasIcuFile(String patientId) {
|
|
|
|
|
String source = "icu";
|
|
|
|
|
return getFileCountByPatientAndSource(patientId, source) > 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据病案主键和来源,统计未作废的文件数量
|
|
|
|
|
* @param patientId 病案主键
|
|
|
|
|
* @param source 系统/采集来源
|
|
|
|
|
* @return 未作废文件数量
|
|
|
|
|
*/
|
|
|
|
|
private int getFileCountByPatientAndSource(String patientId, String source) {
|
|
|
|
|
return tBasicMapper.getFileCountByPatientAndSource(patientId, source);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void updIcuRecordState(String inpatientNo, Integer admissTimes) {
|
|
|
|
|
public void confirmAndUpdIcuRecordState(String inpatientNo, Integer admissTimes) {
|
|
|
|
|
int state = isIcuRecord(inpatientNo, admissTimes) ? 1 : 0;
|
|
|
|
|
tBasicMapper.updIcuRecordState(inpatientNo, admissTimes, state);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean isIcuRecord(String inpatientNo, Integer admissTimes) {
|
|
|
|
|
Integer exists = sdRyIcuMapper.isExists(inpatientNo, admissTimes);
|
|
|
|
|
return !Objects.isNull(exists);
|
|
|
|
|
Integer count = sdRyIcuMapper.countByInpNoAndAdmissTimes(inpatientNo, admissTimes);
|
|
|
|
|
return count>0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void compensateTask(List<String> patientIds, List<String> collectorIds) {
|
|
|
|
|