666666
This commit is contained in:
parent
94f796fdf2
commit
d6133afeac
@ -32,6 +32,8 @@ import java.time.Duration;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.chrono.ChronoLocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@ -453,75 +455,77 @@ public class MedicalRecordService {
|
||||
|
||||
// 检测所有时间
|
||||
public ResponseDTO checkAllTime(MedicalRecordUpdateForm form){
|
||||
// 基础时间
|
||||
LocalDateTime admissionTime = form.getAdmissionTime();
|
||||
LocalDateTime dischargeTime = form.getDischargeTime();
|
||||
LocalDateTime headTime = form.getHeadTime();
|
||||
LocalDateTime afterTime = form.getAfterTime();
|
||||
LocalDateTime lastTime = form.getLastTime();
|
||||
// 转换为 LocalDate
|
||||
LocalDate admissionDate = form.getAdmissionTime().toLocalDate();
|
||||
LocalDate dischargeDate = form.getDischargeTime().toLocalDate();
|
||||
LocalDate headDate = form.getHeadTime().toLocalDate();
|
||||
LocalDate afterDate = form.getAfterTime().toLocalDate();
|
||||
LocalDate lastDate = form.getLastTime() != null ? form.getLastTime().toLocalDate() : null;
|
||||
List<DpmsAddForm> dpmas = form.getDpmas();
|
||||
|
||||
// 时间基准线
|
||||
LocalDateTime targetDate = LocalDateTime.of(2024, 10, 1, 0, 0);
|
||||
LocalDate targetDate = LocalDate.of(2024, 10, 1);
|
||||
|
||||
// 1. 所有时间必须 >= 2024-10-01(允许等于)
|
||||
if (!admissionTime.isEqual(targetDate) && !admissionTime.isAfter(targetDate)) {
|
||||
if (!admissionDate.isEqual(targetDate) && !admissionDate.isAfter(targetDate)) {
|
||||
return ResponseDTO.userErrorParam("入院时间需在2024年10月1日或之后");
|
||||
}
|
||||
if (!dischargeTime.isEqual(targetDate) && !dischargeTime.isAfter(targetDate)) {
|
||||
if (!dischargeDate.isEqual(targetDate) && !dischargeDate.isAfter(targetDate)) {
|
||||
return ResponseDTO.userErrorParam("出院时间需在2024年10月1日或之后");
|
||||
}
|
||||
if (!headTime.isEqual(targetDate) && !headTime.isAfter(targetDate)) {
|
||||
if (!headDate.isEqual(targetDate) && !headDate.isAfter(targetDate)) {
|
||||
return ResponseDTO.userErrorParam("首次人工肝治疗前检测时间需在2024年10月1日或之后");
|
||||
}
|
||||
if (!afterTime.isEqual(targetDate) && !afterTime.isAfter(targetDate)) {
|
||||
if (!afterDate.isEqual(targetDate) && !afterDate.isAfter(targetDate)) {
|
||||
return ResponseDTO.userErrorParam("首次人工肝治疗后检测时间需在2024年10月1日或之后");
|
||||
}
|
||||
|
||||
for (DpmsAddForm dpma : dpmas) {
|
||||
LocalDateTime treatTime = dpma.getTreatTime();
|
||||
LocalDate treatTime = dpma.getTreatTime().toLocalDate();
|
||||
|
||||
|
||||
if (!treatTime.isEqual(targetDate) && !treatTime.isAfter(targetDate)) {
|
||||
return ResponseDTO.userErrorParam("人工肝治疗时间需在2024年10月1日或之后");
|
||||
}
|
||||
}
|
||||
|
||||
if (lastTime != null) {
|
||||
if (!lastTime.isEqual(targetDate) && !lastTime.isAfter(targetDate)) {
|
||||
if (lastDate != null) {
|
||||
if (!lastDate.isEqual(targetDate) && !lastDate.isAfter(targetDate)) {
|
||||
return ResponseDTO.userErrorParam("最后一次人工肝治疗后检测时间需在2024年10月1日或之后");
|
||||
}
|
||||
}
|
||||
|
||||
// 2. 出院时间必须大于入院时间
|
||||
if (dpmas.size() > 1){
|
||||
if (!dischargeTime.isAfter(admissionTime)) {
|
||||
if (!dischargeDate.isAfter(admissionDate)) {
|
||||
return ResponseDTO.userErrorParam("出院时间必须大于入院时间");
|
||||
}
|
||||
}
|
||||
|
||||
// 3. 所有时间必须在入院与出院之间(含当天)
|
||||
if (headTime.isBefore(admissionTime) || headTime.isAfter(dischargeTime)) {
|
||||
if (headDate.isBefore(admissionDate) || headDate.isAfter(dischargeDate)) {
|
||||
return ResponseDTO.userErrorParam("首次人工肝治疗前检测时间必须在入院和出院时间之间");
|
||||
}
|
||||
if (afterTime.isBefore(admissionTime) || afterTime.isAfter(dischargeTime)) {
|
||||
if (afterDate.isBefore(admissionDate) || afterDate.isAfter(dischargeDate)) {
|
||||
return ResponseDTO.userErrorParam("首次人工肝治疗后检测时间必须在入院和出院时间之间");
|
||||
}
|
||||
if (lastTime != null && (lastTime.isBefore(admissionTime) || lastTime.isAfter(dischargeTime))) {
|
||||
if (lastDate != null && (lastDate.isBefore(admissionDate) || lastDate.isAfter(dischargeDate))) {
|
||||
return ResponseDTO.userErrorParam("最后一次人工肝治疗后检测时间必须在入院和出院时间之间");
|
||||
}
|
||||
|
||||
for (int i = 0; i < dpmas.size(); i++) {
|
||||
DpmsAddForm dpma = dpmas.get(i);
|
||||
LocalDateTime treatTime = dpma.getTreatTime();
|
||||
LocalDate treatTime = dpma.getTreatTime().toLocalDate();
|
||||
|
||||
if (dpmas.size() > 1) {
|
||||
// 多次治疗:必须严格在入院和出院之间(不能等于)
|
||||
if (!treatTime.isAfter(admissionTime) || !treatTime.isBefore(dischargeTime)) {
|
||||
if (!treatTime.isAfter(admissionDate) || !treatTime.isBefore(dischargeDate)) {
|
||||
return ResponseDTO.userErrorParam("第 " + (i + 1) + " 次人工肝治疗时间必须在入院和出院时间之间");
|
||||
}
|
||||
} else {
|
||||
// 只有一次治疗:允许等于入院或出院时间
|
||||
if (treatTime.isBefore(admissionTime) || treatTime.isAfter(dischargeTime)) {
|
||||
return ResponseDTO.userErrorParam("人工肝治疗时间必须在入院和出院时间之间(允许为同一天)");
|
||||
if (treatTime.isBefore(admissionDate) || treatTime.isAfter(dischargeDate)) {
|
||||
return ResponseDTO.userErrorParam("人工肝治疗时间必须在入院和出院时间之间");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -538,35 +542,35 @@ public class MedicalRecordService {
|
||||
}
|
||||
|
||||
for (int i = 1; i < dpmas.size(); i++) {
|
||||
LocalDateTime prev = dpmas.get(i - 1).getTreatTime();
|
||||
LocalDateTime curr = dpmas.get(i).getTreatTime();
|
||||
LocalDate prev = dpmas.get(i - 1).getTreatTime().toLocalDate();
|
||||
LocalDate curr = dpmas.get(i).getTreatTime().toLocalDate();
|
||||
if (curr.isBefore(prev)) {
|
||||
return ResponseDTO.userErrorParam("第 " + (i + 1) + " 次治疗时间必须晚于第 " + i + " 次");
|
||||
}
|
||||
}
|
||||
|
||||
// 5. 时间顺序关系校验
|
||||
LocalDateTime firstTreatTime = dpmas.get(0).getTreatTime();
|
||||
LocalDate firstTreatTime = dpmas.get(0).getTreatTime().toLocalDate();
|
||||
|
||||
if (headTime.isAfter(firstTreatTime)) {
|
||||
if (headDate.isAfter(firstTreatTime)) {
|
||||
return ResponseDTO.userErrorParam("首次人工肝治疗前检测时间必须早于第一次治疗时间");
|
||||
}
|
||||
|
||||
if (afterTime.isBefore(firstTreatTime)) {
|
||||
if (afterDate.isBefore(firstTreatTime)) {
|
||||
return ResponseDTO.userErrorParam("首次人工肝治疗后检测时间必须在第一次治疗时间之后");
|
||||
}
|
||||
|
||||
if (dpmas.size() > 1) {
|
||||
if (lastTime == null) {
|
||||
if (lastDate == null) {
|
||||
return ResponseDTO.userErrorParam("人工肝治疗次数大于1,需填入最后一次人工肝治疗后检测时间");
|
||||
}
|
||||
|
||||
LocalDateTime lastTreatTime = dpmas.get(dpmas.size() - 1).getTreatTime();
|
||||
if (lastTime.isBefore(lastTreatTime)) {
|
||||
LocalDate lastTreatTime = dpmas.get(dpmas.size() - 1).getTreatTime().toLocalDate();
|
||||
if (lastDate.isBefore(lastTreatTime)) {
|
||||
return ResponseDTO.userErrorParam("最后一次人工肝治疗后检测时间必须在最后一次治疗时间之后");
|
||||
}
|
||||
|
||||
if (lastTime.isAfter(dischargeTime)) {
|
||||
if (lastDate.isAfter(dischargeDate)) {
|
||||
return ResponseDTO.userErrorParam("最后一次人工肝治疗后检测时间必须在出院时间之前");
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user