|
@@ -25,7 +25,6 @@ import org.dromara.web.service.ReportService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.sql.Timestamp;
|
|
|
-import java.util.concurrent.atomic.AtomicLong;
|
|
|
|
|
|
/**
|
|
|
* @Author: Huanyi
|
|
@@ -74,6 +73,7 @@ public class ReportServiceImpl implements ReportService {
|
|
|
private final ProductDispatchRecordMapper productDispatchRecordMapper;
|
|
|
private final NutritionQualityControlMapper nutritionQualityControlMapper;
|
|
|
private final BadEnteralNutritionEventMapper badEnteralNutritionEventMapper;
|
|
|
+ private final ConsultPatientMapper consultPatientMapper;
|
|
|
|
|
|
@Override
|
|
|
public R getNutritionalQualityControl(Timestamp start, Timestamp end) {
|
|
@@ -81,35 +81,96 @@ public class ReportServiceImpl implements ReportService {
|
|
|
NutritionalQualityControlReportVo vo = new NutritionalQualityControlReportVo();
|
|
|
|
|
|
NutritionQualityControl nutritionQualityControl = nutritionQualityControlMapper.selectById(1);
|
|
|
- AtomicLong count = new AtomicLong(0L);
|
|
|
- badEnteralNutritionEventMapper.selectList().forEach(e -> count.addAndGet(e.getCount()));
|
|
|
+ long enteralNutritionCount = 0L, outpatientNutritionCount = 0L;
|
|
|
+ for (BadEvent e : badEnteralNutritionEventMapper.selectList()) {
|
|
|
+ if (Objects.equals(e.getType(), 0)) enteralNutritionCount += e.getCount();
|
|
|
+ else outpatientNutritionCount++;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ConsultPatient> patientList = consultPatientMapper.selectList();
|
|
|
+ List<PatientMedicalRecord> recordList = patientMedicalRecordMapper.selectList(
|
|
|
+ Wrappers.lambdaQuery(PatientMedicalRecord.class).eq(PatientMedicalRecord::getMedicalType, "1")
|
|
|
+ );
|
|
|
+ List<NutritionScreening> screeningList = nutritionScreeningMapper.selectList(
|
|
|
+ Wrappers.lambdaQuery(NutritionScreening.class)
|
|
|
+ );
|
|
|
+ List<NutritionEvaluation> evaluationList = nutritionEvaluationMapper.selectList(
|
|
|
+ Wrappers.lambdaQuery(NutritionEvaluation.class)
|
|
|
+ );
|
|
|
+
|
|
|
+ long nutritionClinicTotalCount = 0L;
|
|
|
+
|
|
|
+ long nutritionScreeningInHospitalInDayCount = 0L;
|
|
|
+ long inHospitalOneDayTotalCount = 0L;
|
|
|
+ long nutritionEvaluationCount = 0L;
|
|
|
+ long inHospitalTotalCount = 0L;
|
|
|
+ long nutritionEvaluationInDangerCount = 0L;
|
|
|
+ long inHospitalInDangerTotalCount = 0L;
|
|
|
+ long enteralNutritionInterventionCount = 0L;
|
|
|
+ long dietaryNutritionInterventionBadEventCount = 0L;
|
|
|
+ long dietaryNutritionInterventionTotalCount = 0L;
|
|
|
+ long decreaseDosageDiabeticInHospitalCount = 0L;
|
|
|
+ long insulinAndNutritionDiabeticInHospitalCount = 0L;
|
|
|
+ long nutritionScreeningInHospitalCount = 0L;
|
|
|
+ long inHospitalCount = 0L;
|
|
|
+ long inDangerAndNutritionCureInHospitalCount = 0L;
|
|
|
+ long inDangerAndInHospitalCount = 0L;
|
|
|
+ long nutritionEvaluationDiabeticInHospitalCount = 0L;
|
|
|
+ long diabeticInHospitalCount = 0L;
|
|
|
+ long nutritionCureDiabeticInHospitalCount = 0L;
|
|
|
+
|
|
|
+ for (ConsultPatient patient : patientList) {
|
|
|
+ for (PatientMedicalRecord record : recordList) {
|
|
|
+ if (Objects.equals(record.getTreatNum(), patient.getConsultNum())) {
|
|
|
+ if (Objects.equals(record.getType(), "0")) nutritionClinicTotalCount++;
|
|
|
+ else {
|
|
|
+ inHospitalTotalCount++;
|
|
|
+ if (System.currentTimeMillis() - record.getCreateTime().getTime() <= 24 * 60 * 60 * 1000L) {
|
|
|
+ inHospitalOneDayTotalCount++;
|
|
|
+ for (NutritionScreening nutritionScreening : screeningList) {
|
|
|
+ if (Objects.equals(nutritionScreening.getPatientId(), record.getId())) inHospitalOneDayTotalCount++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (NutritionEvaluation nutritionEvaluation : evaluationList) {
|
|
|
+ for (NutritionEvaluation evaluation : evaluationList) {
|
|
|
+ if (Objects.equals(record.getId(), evaluation.getPatientId())) nutritionEvaluationCount++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ enteralNutritionInterventionCount = enteralNutritionMapper.selectCount(
|
|
|
+ Wrappers.lambdaQuery(EnteralNutrition.class).eq(EnteralNutrition::getExecuteStatus, "1")
|
|
|
+ );
|
|
|
|
|
|
vo.setBedCount(nutritionQualityControl.getBedCount());
|
|
|
vo.setDoctorCount(nutritionQualityControl.getDoctorCount());
|
|
|
vo.setNurseCount(nutritionQualityControl.getNurseCount());
|
|
|
vo.setNutritionClinicComplaintCount(nutritionQualityControl.getNutritionClinicComplaintCount());
|
|
|
-
|
|
|
-
|
|
|
- vo.setNutritionClinicTotalCount(100L);
|
|
|
- vo.setNutritionScreeningInHospitalInDayCount(20L);
|
|
|
- vo.setInHospitalOneDayTotalCount(50L);
|
|
|
- vo.setNutritionEvaluationCount(20L);
|
|
|
- vo.setInHospitalTotalCount(150L);
|
|
|
- vo.setNutritionEvaluationInDangerCount(20L);
|
|
|
- vo.setInHospitalInDangerTotalCount(60L);
|
|
|
- vo.setEnteralNutritionBadEventCount(count.get());
|
|
|
- vo.setEnteralNutritionInterventionCount(20L);
|
|
|
- vo.setDietaryNutritionInterventionBadEventCount(0L);
|
|
|
- vo.setDietaryNutritionInterventionTotalCount(40L);
|
|
|
- vo.setDecreaseDosageDiabeticInHospitalCount(30L);
|
|
|
- vo.setInsulinAndNutritionDiabeticInHospitalCount(50L);
|
|
|
- vo.setNutritionScreeningInHospitalCount(25L);
|
|
|
- vo.setInHospitalCount(150L);
|
|
|
- vo.setInDangerAndNutritionCureInHospitalCount(40L);
|
|
|
- vo.setInDangerAndInHospitalCount(30L);
|
|
|
- vo.setNutritionEvaluationDiabeticInHospitalCount(20L);
|
|
|
- vo.setDiabeticInHospitalCount(50L);
|
|
|
- vo.setNutritionCureDiabeticInHospitalCount(10L);
|
|
|
+ vo.setNutritionClinicTotalCount(nutritionClinicTotalCount);
|
|
|
+
|
|
|
+ vo.setNutritionScreeningInHospitalInDayCount(nutritionScreeningInHospitalInDayCount);
|
|
|
+ vo.setInHospitalOneDayTotalCount(inHospitalOneDayTotalCount);
|
|
|
+ vo.setInHospitalTotalCount(inHospitalTotalCount);
|
|
|
+ vo.setNutritionEvaluationCount(nutritionEvaluationCount);
|
|
|
+ vo.setEnteralNutritionBadEventCount(enteralNutritionCount);
|
|
|
+ vo.setEnteralNutritionInterventionCount(enteralNutritionInterventionCount);
|
|
|
+
|
|
|
+ vo.setDietaryNutritionInterventionBadEventCount(dietaryNutritionInterventionBadEventCount);
|
|
|
+ vo.setDietaryNutritionInterventionTotalCount(dietaryNutritionInterventionTotalCount);
|
|
|
+ vo.setDecreaseDosageDiabeticInHospitalCount(decreaseDosageDiabeticInHospitalCount);
|
|
|
+ vo.setInsulinAndNutritionDiabeticInHospitalCount(insulinAndNutritionDiabeticInHospitalCount);
|
|
|
+ vo.setNutritionScreeningInHospitalCount(nutritionScreeningInHospitalCount);
|
|
|
+ vo.setInHospitalCount(inHospitalCount);
|
|
|
+ vo.setInDangerAndNutritionCureInHospitalCount(inDangerAndNutritionCureInHospitalCount);
|
|
|
+ vo.setInDangerAndInHospitalCount(inDangerAndInHospitalCount);
|
|
|
+ vo.setNutritionEvaluationDiabeticInHospitalCount(nutritionEvaluationDiabeticInHospitalCount);
|
|
|
+ vo.setDiabeticInHospitalCount(diabeticInHospitalCount);
|
|
|
+ vo.setNutritionCureDiabeticInHospitalCount(nutritionCureDiabeticInHospitalCount);
|
|
|
+ vo.setNutritionEvaluationInDangerCount(nutritionEvaluationInDangerCount);
|
|
|
+ vo.setInHospitalInDangerTotalCount(inHospitalInDangerTotalCount);
|
|
|
|
|
|
return R.ok(vo);
|
|
|
}
|