|
@@ -151,29 +151,44 @@ public class PatientCriticalValuesService {
|
|
|
return employeeList;
|
|
|
}
|
|
|
|
|
|
- public CodeName getTargetDept(String patNo, String sentDept, PatientType patientType) {
|
|
|
+ public CodeName getTargetDept(CriticalValueFromTest value) {
|
|
|
+ if (StringUtil.notBlank(value.getSentByDepartmentCode())
|
|
|
+ && StringUtil.notBlank(value.getSentByDepartment())) {
|
|
|
+ return new CodeName(value.getSentByDepartmentCode(), value.getSentByDepartment());
|
|
|
+ }
|
|
|
CodeName targetDept = null;
|
|
|
- if (patientType == PatientType.INPATIENT) {
|
|
|
- targetDept = dao.selectTargetDept(patNo);
|
|
|
+ if (value.getPatientType() == PatientType.INPATIENT) {
|
|
|
+ targetDept = dao.selectTargetDept(value.getPatNo());
|
|
|
}
|
|
|
if (null == targetDept) {
|
|
|
- targetDept = dao.selectTargetDeptByName(sentDept);
|
|
|
+ if (StringUtil.notBlank(value.getSentByDepartmentCode())) {
|
|
|
+ targetDept = dao.selectTargetDeptByCode(value.getSentByDepartmentCode());
|
|
|
+ } else {
|
|
|
+ targetDept = dao.selectTargetDeptByName(value.getSentByDepartment());
|
|
|
+ }
|
|
|
}
|
|
|
return targetDept;
|
|
|
}
|
|
|
|
|
|
public ResultVo<String> checkTheCriticalValue(CriticalValueFromTest value) {
|
|
|
log.info("收到检查危急值消息:{}", JSON.toJSON(value));
|
|
|
+ if (StringUtil.isBlank(value.getPatNo())) {
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "住院/门诊号不能为空。");
|
|
|
+ }
|
|
|
if (null == value.getFlag()) {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR,
|
|
|
- "flag 门诊住院标志不存在 1=住院 2=门诊");
|
|
|
+ "门诊住院标志[flag]不存在(1=住院,2=门诊)。");
|
|
|
+ }
|
|
|
+ if (1 != value.getFlag() && 2 != value.getFlag()) {
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR,
|
|
|
+ "门诊住院标志[flag=" + value.getFlag() + "]值域错误(1=住院,2=门诊)。");
|
|
|
}
|
|
|
- if (StringUtil.isBlank(value.getSentByDepartment())) {
|
|
|
+ if (StringUtil.isBlank(value.getSentByDepartment()) && StringUtil.isBlank(value.getSentByDepartmentCode())) {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "送检科室不能为空。");
|
|
|
}
|
|
|
- PatientType patientType = value.getFlag() == 1 ?
|
|
|
- PatientType.INPATIENT : PatientType.OUTPATIENT;
|
|
|
- CodeName targetDept = getTargetDept(value.getPatNo(), value.getSentByDepartment(), patientType);
|
|
|
+ PatientType patientType = value.getFlag() == 1 ? PatientType.INPATIENT : PatientType.OUTPATIENT;
|
|
|
+ value.setPatientType(patientType);
|
|
|
+ CodeName targetDept = getTargetDept(value);
|
|
|
if (null == targetDept) {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "无法找到患者的送检科室。");
|
|
|
}
|