feat(infection): 手卫生+环境+耐药菌监测
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
package com.healthlink.his.web.infection.appservice;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.healthlink.his.infection.domain.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface IInfectionEnhancedAppService {
|
||||
Page<HandHygiene> getHandHygienePage(String departmentName, int pageNo, int pageSize);
|
||||
HandHygiene recordHandHygiene(Map<String, Object> params);
|
||||
Map<String, Object> getHandHygieneStats(Long departmentId);
|
||||
|
||||
Page<EnvironmentalMonitor> getEnvironmentalPage(String departmentName, String monitorType, String result, int pageNo, int pageSize);
|
||||
EnvironmentalMonitor recordEnvironmental(Map<String, Object> params);
|
||||
Map<String, Object> getEnvironmentalStats();
|
||||
|
||||
Page<MultiDrugResistant> getMultiDrugPage(String patientName, String bacteriaName, Integer isolationStatus, int pageNo, int pageSize);
|
||||
MultiDrugResistant recordMultiDrug(Map<String, Object> params);
|
||||
}
|
||||
@@ -0,0 +1,185 @@
|
||||
package com.healthlink.his.web.infection.appservice.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.healthlink.his.infection.domain.*;
|
||||
import com.healthlink.his.infection.service.*;
|
||||
import com.healthlink.his.web.infection.appservice.IInfectionEnhancedAppService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
@AllArgsConstructor
|
||||
public class InfectionEnhancedAppServiceImpl implements IInfectionEnhancedAppService {
|
||||
|
||||
private final IHandHygieneService handHygieneService;
|
||||
private final IEnvironmentalMonitorService envMonitorService;
|
||||
private final IMultiDrugResistantService mdrService;
|
||||
|
||||
// ==================== 手卫生 ====================
|
||||
|
||||
@Override
|
||||
public Page<HandHygiene> getHandHygienePage(String departmentName, int pageNo, int pageSize) {
|
||||
LambdaQueryWrapper<HandHygiene> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.like(StringUtils.hasText(departmentName), HandHygiene::getDepartmentName, departmentName)
|
||||
.orderByDesc(HandHygiene::getMonitorDate);
|
||||
return handHygieneService.page(new Page<>(pageNo, pageSize), wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public HandHygiene recordHandHygiene(Map<String, Object> params) {
|
||||
log.info("记录手卫生监测数据");
|
||||
HandHygiene hh = new HandHygiene();
|
||||
hh.setDepartmentId(params.get("departmentId") != null ? Long.valueOf(params.get("departmentId").toString()) : null);
|
||||
hh.setDepartmentName(getStr(params, "departmentName"));
|
||||
hh.setMonitorDate(params.get("monitorDate") != null ? parseDate(params.get("monitorDate").toString()) : null);
|
||||
hh.setObserveCount(parseInt(params.get("observeCount"), 0));
|
||||
hh.setComplyCount(parseInt(params.get("complyCount"), 0));
|
||||
hh.setObserverName(getStr(params, "observerName"));
|
||||
hh.setRemarks(getStr(params, "remarks"));
|
||||
hh.setCreateTime(new Date());
|
||||
|
||||
if (hh.getObserveCount() > 0 && hh.getComplyCount() != null) {
|
||||
hh.setComplyRate(BigDecimal.valueOf(hh.getComplyCount())
|
||||
.divide(BigDecimal.valueOf(hh.getObserveCount()), 4, RoundingMode.HALF_UP)
|
||||
.multiply(BigDecimal.valueOf(100))
|
||||
.setScale(2, RoundingMode.HALF_UP));
|
||||
} else {
|
||||
hh.setComplyRate(BigDecimal.ZERO);
|
||||
}
|
||||
|
||||
handHygieneService.save(hh);
|
||||
return hh;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getHandHygieneStats(Long departmentId) {
|
||||
LambdaQueryWrapper<HandHygiene> wrapper = new LambdaQueryWrapper<>();
|
||||
if (departmentId != null) {
|
||||
wrapper.eq(HandHygiene::getDepartmentId, departmentId);
|
||||
}
|
||||
List<HandHygiene> list = handHygieneService.list(wrapper);
|
||||
int totalObserve = 0, totalComply = 0;
|
||||
for (HandHygiene hh : list) {
|
||||
totalObserve += hh.getObserveCount() != null ? hh.getObserveCount() : 0;
|
||||
totalComply += hh.getComplyCount() != null ? hh.getComplyCount() : 0;
|
||||
}
|
||||
Map<String, Object> stats = new HashMap<>();
|
||||
stats.put("totalObserve", totalObserve);
|
||||
stats.put("totalComply", totalComply);
|
||||
stats.put("overallRate", totalObserve > 0 ?
|
||||
BigDecimal.valueOf(totalComply).divide(BigDecimal.valueOf(totalObserve), 4, RoundingMode.HALF_UP)
|
||||
.multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP) : BigDecimal.ZERO);
|
||||
stats.put("recordCount", list.size());
|
||||
return stats;
|
||||
}
|
||||
|
||||
// ==================== 环境卫生学监测 ====================
|
||||
|
||||
@Override
|
||||
public Page<EnvironmentalMonitor> getEnvironmentalPage(String departmentName, String monitorType, String result, int pageNo, int pageSize) {
|
||||
LambdaQueryWrapper<EnvironmentalMonitor> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.like(StringUtils.hasText(departmentName), EnvironmentalMonitor::getDepartmentName, departmentName)
|
||||
.eq(StringUtils.hasText(monitorType), EnvironmentalMonitor::getMonitorType, monitorType)
|
||||
.eq(StringUtils.hasText(result), EnvironmentalMonitor::getResult, result)
|
||||
.orderByDesc(EnvironmentalMonitor::getMonitorDate);
|
||||
return envMonitorService.page(new Page<>(pageNo, pageSize), wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public EnvironmentalMonitor recordEnvironmental(Map<String, Object> params) {
|
||||
log.info("记录环境卫生学监测数据");
|
||||
EnvironmentalMonitor env = new EnvironmentalMonitor();
|
||||
env.setDepartmentId(params.get("departmentId") != null ? Long.valueOf(params.get("departmentId").toString()) : null);
|
||||
env.setDepartmentName(getStr(params, "departmentName"));
|
||||
env.setMonitorType(getStr(params, "monitorType"));
|
||||
env.setMonitorItem(getStr(params, "monitorItem"));
|
||||
env.setMonitorDate(params.get("monitorDate") != null ? parseDate(params.get("monitorDate").toString()) : null);
|
||||
env.setStandardValue(getStr(params, "standardValue"));
|
||||
env.setActualValue(getStr(params, "actualValue"));
|
||||
env.setResult(getStr(params, "result"));
|
||||
env.setTesterName(getStr(params, "testerName"));
|
||||
env.setRemarks(getStr(params, "remarks"));
|
||||
env.setCreateTime(new Date());
|
||||
envMonitorService.save(env);
|
||||
return env;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getEnvironmentalStats() {
|
||||
Map<String, Object> stats = new HashMap<>();
|
||||
stats.put("total", envMonitorService.count());
|
||||
LambdaQueryWrapper<EnvironmentalMonitor> wq = new LambdaQueryWrapper<>();
|
||||
wq.eq(EnvironmentalMonitor::getResult, "合格");
|
||||
stats.put("qualified", envMonitorService.count(wq));
|
||||
wq.clear();
|
||||
wq.eq(EnvironmentalMonitor::getResult, "不合格");
|
||||
stats.put("unqualified", envMonitorService.count(wq));
|
||||
return stats;
|
||||
}
|
||||
|
||||
// ==================== 多重耐药菌 ====================
|
||||
|
||||
@Override
|
||||
public Page<MultiDrugResistant> getMultiDrugPage(String patientName, String bacteriaName, Integer isolationStatus, int pageNo, int pageSize) {
|
||||
LambdaQueryWrapper<MultiDrugResistant> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.like(StringUtils.hasText(patientName), MultiDrugResistant::getPatientName, patientName)
|
||||
.like(StringUtils.hasText(bacteriaName), MultiDrugResistant::getBacteriaName, bacteriaName)
|
||||
.eq(isolationStatus != null, MultiDrugResistant::getIsolationStatus, isolationStatus)
|
||||
.orderByDesc(MultiDrugResistant::getReportDate);
|
||||
return mdrService.page(new Page<>(pageNo, pageSize), wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public MultiDrugResistant recordMultiDrug(Map<String, Object> params) {
|
||||
log.info("记录多重耐药菌数据");
|
||||
MultiDrugResistant mdr = new MultiDrugResistant();
|
||||
mdr.setPatientId(params.get("patientId") != null ? Long.valueOf(params.get("patientId").toString()) : null);
|
||||
mdr.setPatientName(getStr(params, "patientName"));
|
||||
mdr.setEncounterId(params.get("encounterId") != null ? Long.valueOf(params.get("encounterId").toString()) : null);
|
||||
mdr.setDepartmentId(params.get("departmentId") != null ? Long.valueOf(params.get("departmentId").toString()) : null);
|
||||
mdr.setDepartmentName(getStr(params, "departmentName"));
|
||||
mdr.setBacteriaName(getStr(params, "bacteriaName"));
|
||||
mdr.setResistanceType(getStr(params, "resistanceType"));
|
||||
mdr.setSpecimenType(getStr(params, "specimenType"));
|
||||
mdr.setSpecimenDate(params.get("specimenDate") != null ? parseDate(params.get("specimenDate").toString()) : null);
|
||||
mdr.setReportDate(params.get("reportDate") != null ? parseDate(params.get("reportDate").toString()) : null);
|
||||
mdr.setIsolationStatus(0);
|
||||
mdr.setTreatmentPlan(getStr(params, "treatmentPlan"));
|
||||
mdr.setOutcome(getStr(params, "outcome"));
|
||||
mdr.setStatus(0);
|
||||
mdr.setCreateTime(new Date());
|
||||
mdrService.save(mdr);
|
||||
return mdr;
|
||||
}
|
||||
|
||||
// ==================== 工具方法 ====================
|
||||
|
||||
private Date parseDate(String s) {
|
||||
try { return new java.text.SimpleDateFormat("yyyy-MM-dd").parse(s); }
|
||||
catch (Exception e) { return null; }
|
||||
}
|
||||
|
||||
private int parseInt(Object val, int defaultVal) {
|
||||
if (val == null) return defaultVal;
|
||||
try { return Integer.parseInt(val.toString()); }
|
||||
catch (NumberFormatException e) { return defaultVal; }
|
||||
}
|
||||
|
||||
private String getStr(Map<String, Object> params, String key) {
|
||||
Object v = params.get(key);
|
||||
return v != null ? v.toString() : null;
|
||||
}
|
||||
}
|
||||
@@ -1,187 +1,86 @@
|
||||
package com.healthlink.his.web.infection.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.core.common.core.domain.R;
|
||||
import com.healthlink.his.infection.domain.*;
|
||||
import com.healthlink.his.infection.service.*;
|
||||
import com.healthlink.his.web.infection.appservice.IInfectionEnhancedAppService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 院感管理增强Controller
|
||||
* 补全: 暴发预警、目标性监测、手卫生监测、多重耐药菌、环境卫生学监测
|
||||
*/
|
||||
@Tag(name = "院感管理增强")
|
||||
@RestController
|
||||
@RequestMapping("/infection-enhanced")
|
||||
@Slf4j
|
||||
@AllArgsConstructor
|
||||
public class InfectionEnhancedController {
|
||||
|
||||
private final IOutbreakWarningService outbreakService;
|
||||
private final ITargetedSurveillanceService surveillanceService;
|
||||
private final IHandHygieneService handHygieneService;
|
||||
private final IMultiDrugResistantService mdrService;
|
||||
private final IEnvironmentalMonitorService envMonitorService;
|
||||
|
||||
// ==================== 暴发预警 ====================
|
||||
|
||||
@GetMapping("/outbreak/page")
|
||||
public R<?> getOutbreakPage(
|
||||
@RequestParam(value = "departmentName", required = false) String departmentName,
|
||||
@RequestParam(value = "status", required = false) Integer status,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) {
|
||||
LambdaQueryWrapper<OutbreakWarning> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.like(StringUtils.hasText(departmentName), OutbreakWarning::getDepartmentName, departmentName)
|
||||
.eq(status != null, OutbreakWarning::getStatus, status)
|
||||
.orderByDesc(OutbreakWarning::getCreateTime);
|
||||
return R.ok(outbreakService.page(new Page<>(pageNo, pageSize), wrapper));
|
||||
}
|
||||
|
||||
@PostMapping("/outbreak/add")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public R<?> addOutbreak(@RequestBody OutbreakWarning warning) {
|
||||
warning.setStatus(0);
|
||||
warning.setCreateTime(new Date());
|
||||
outbreakService.save(warning);
|
||||
return R.ok(warning);
|
||||
}
|
||||
|
||||
@PostMapping("/outbreak/handle")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public R<?> handleOutbreak(@RequestBody Map<String, Object> params) {
|
||||
Long id = Long.valueOf(params.get("id").toString());
|
||||
String result = (String) params.get("handleResult");
|
||||
OutbreakWarning warning = outbreakService.getById(id);
|
||||
if (warning == null) return R.fail("预警记录不存在");
|
||||
warning.setStatus(2);
|
||||
warning.setHandleResult(result);
|
||||
warning.setHandleTime(new Date());
|
||||
warning.setUpdateTime(new Date());
|
||||
outbreakService.updateById(warning);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@PostMapping("/outbreak/exclude")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public R<?> excludeOutbreak(@RequestParam Long id, @RequestParam(required = false) String reason) {
|
||||
OutbreakWarning warning = outbreakService.getById(id);
|
||||
if (warning == null) return R.fail("预警记录不存在");
|
||||
warning.setStatus(3);
|
||||
warning.setHandleResult("排除: " + (reason != null ? reason : "误报"));
|
||||
warning.setHandleTime(new Date());
|
||||
warning.setUpdateTime(new Date());
|
||||
outbreakService.updateById(warning);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
// ==================== 目标性监测 ====================
|
||||
|
||||
@GetMapping("/surveillance/page")
|
||||
public R<?> getSurveillancePage(
|
||||
@RequestParam(value = "surveillanceType", required = false) Integer type,
|
||||
@RequestParam(value = "departmentName", required = false) String deptName,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) {
|
||||
LambdaQueryWrapper<TargetedSurveillance> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(type != null, TargetedSurveillance::getSurveillanceType, type)
|
||||
.like(StringUtils.hasText(deptName), TargetedSurveillance::getDepartmentName, deptName)
|
||||
.orderByDesc(TargetedSurveillance::getStartDate);
|
||||
return R.ok(surveillanceService.page(new Page<>(pageNo, pageSize), wrapper));
|
||||
}
|
||||
|
||||
@PostMapping("/surveillance/add")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public R<?> addSurveillance(@RequestBody TargetedSurveillance sv) {
|
||||
sv.setStatus(0);
|
||||
sv.setTotalCases(0);
|
||||
sv.setInfectionCases(0);
|
||||
sv.setInfectionRate(BigDecimal.ZERO);
|
||||
sv.setCreateTime(new Date());
|
||||
surveillanceService.save(sv);
|
||||
return R.ok(sv);
|
||||
}
|
||||
|
||||
@PostMapping("/surveillance/update-stats")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public R<?> updateSurveillanceStats(@RequestBody Map<String, Object> params) {
|
||||
Long id = Long.valueOf(params.get("id").toString());
|
||||
Integer totalCases = Integer.valueOf(params.get("totalCases").toString());
|
||||
Integer infectionCases = Integer.valueOf(params.get("infectionCases").toString());
|
||||
TargetedSurveillance sv = surveillanceService.getById(id);
|
||||
if (sv == null) return R.fail("监测记录不存在");
|
||||
sv.setTotalCases(totalCases);
|
||||
sv.setInfectionCases(infectionCases);
|
||||
if (totalCases > 0) {
|
||||
sv.setInfectionRate(BigDecimal.valueOf(infectionCases)
|
||||
.divide(BigDecimal.valueOf(totalCases), 4, RoundingMode.HALF_UP)
|
||||
.multiply(BigDecimal.valueOf(100))
|
||||
.setScale(2, RoundingMode.HALF_UP));
|
||||
}
|
||||
sv.setUpdateTime(new Date());
|
||||
surveillanceService.updateById(sv);
|
||||
return R.ok();
|
||||
}
|
||||
private final IInfectionEnhancedAppService enhancedAppService;
|
||||
|
||||
// ==================== 手卫生监测 ====================
|
||||
|
||||
@Operation(summary = "手卫生监测列表")
|
||||
@PreAuthorize("@ss.hasPermi('infection:infection:list')")
|
||||
@GetMapping("/hand-hygiene/page")
|
||||
public R<?> getHandHygienePage(
|
||||
@RequestParam(value = "departmentName", required = false) String deptName,
|
||||
@RequestParam(value = "departmentName", required = false) String departmentName,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) {
|
||||
LambdaQueryWrapper<HandHygiene> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.like(StringUtils.hasText(deptName), HandHygiene::getDepartmentName, deptName)
|
||||
.orderByDesc(HandHygiene::getMonitorDate);
|
||||
return R.ok(handHygieneService.page(new Page<>(pageNo, pageSize), wrapper));
|
||||
return R.ok(enhancedAppService.getHandHygienePage(departmentName, pageNo, pageSize));
|
||||
}
|
||||
|
||||
@Operation(summary = "记录手卫生监测")
|
||||
@PreAuthorize("@ss.hasPermi('infection:infection:edit')")
|
||||
@PostMapping("/hand-hygiene/add")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public R<?> addHandHygiene(@RequestBody HandHygiene hh) {
|
||||
if (hh.getObserveCount() != null && hh.getObserveCount() > 0 && hh.getComplyCount() != null) {
|
||||
hh.setComplyRate(BigDecimal.valueOf(hh.getComplyCount())
|
||||
.divide(BigDecimal.valueOf(hh.getObserveCount()), 4, RoundingMode.HALF_UP)
|
||||
.multiply(BigDecimal.valueOf(100))
|
||||
.setScale(2, RoundingMode.HALF_UP));
|
||||
}
|
||||
hh.setCreateTime(new Date());
|
||||
handHygieneService.save(hh);
|
||||
return R.ok(hh);
|
||||
public R<?> addHandHygiene(@RequestBody Map<String, Object> params) {
|
||||
return R.ok(enhancedAppService.recordHandHygiene(params));
|
||||
}
|
||||
|
||||
@Operation(summary = "手卫生统计")
|
||||
@PreAuthorize("@ss.hasPermi('infection:infection:list')")
|
||||
@GetMapping("/hand-hygiene/stats")
|
||||
public R<?> getHandHygieneStats(@RequestParam(required = false) Long departmentId) {
|
||||
Map<String, Object> stats = new HashMap<>();
|
||||
LambdaQueryWrapper<HandHygiene> wrapper = new LambdaQueryWrapper<>();
|
||||
if (departmentId != null) {
|
||||
wrapper.eq(HandHygiene::getDepartmentId, departmentId);
|
||||
}
|
||||
List<HandHygiene> list = handHygieneService.list(wrapper);
|
||||
int totalObserve = 0, totalComply = 0;
|
||||
for (HandHygiene hh : list) {
|
||||
totalObserve += hh.getObserveCount() != null ? hh.getObserveCount() : 0;
|
||||
totalComply += hh.getComplyCount() != null ? hh.getComplyCount() : 0;
|
||||
}
|
||||
stats.put("totalObserve", totalObserve);
|
||||
stats.put("totalComply", totalComply);
|
||||
stats.put("overallRate", totalObserve > 0 ?
|
||||
BigDecimal.valueOf(totalComply).divide(BigDecimal.valueOf(totalObserve), 4, RoundingMode.HALF_UP)
|
||||
.multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP) : BigDecimal.ZERO);
|
||||
stats.put("recordCount", list.size());
|
||||
return R.ok(stats);
|
||||
public R<?> getHandHygieneStats(
|
||||
@RequestParam(value = "departmentId", required = false) Long departmentId) {
|
||||
return R.ok(enhancedAppService.getHandHygieneStats(departmentId));
|
||||
}
|
||||
|
||||
// ==================== 环境卫生学监测 ====================
|
||||
|
||||
@Operation(summary = "环境卫生学监测列表")
|
||||
@PreAuthorize("@ss.hasPermi('infection:infection:list')")
|
||||
@GetMapping("/env-monitor/page")
|
||||
public R<?> getEnvMonitorPage(
|
||||
@RequestParam(value = "departmentName", required = false) String departmentName,
|
||||
@RequestParam(value = "monitorType", required = false) String monitorType,
|
||||
@RequestParam(value = "result", required = false) String result,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) {
|
||||
return R.ok(enhancedAppService.getEnvironmentalPage(departmentName, monitorType, result, pageNo, pageSize));
|
||||
}
|
||||
|
||||
@Operation(summary = "记录环境卫生学监测")
|
||||
@PreAuthorize("@ss.hasPermi('infection:infection:edit')")
|
||||
@PostMapping("/env-monitor/add")
|
||||
public R<?> addEnvMonitor(@RequestBody Map<String, Object> params) {
|
||||
return R.ok(enhancedAppService.recordEnvironmental(params));
|
||||
}
|
||||
|
||||
@Operation(summary = "环境卫生学监测统计")
|
||||
@PreAuthorize("@ss.hasPermi('infection:infection:list')")
|
||||
@GetMapping("/env-monitor/stats")
|
||||
public R<?> getEnvMonitorStats() {
|
||||
return R.ok(enhancedAppService.getEnvironmentalStats());
|
||||
}
|
||||
|
||||
// ==================== 多重耐药菌 ====================
|
||||
|
||||
@Operation(summary = "多重耐药菌列表")
|
||||
@PreAuthorize("@ss.hasPermi('infection:infection:list')")
|
||||
@GetMapping("/mdr/page")
|
||||
public R<?> getMdrPage(
|
||||
@RequestParam(value = "patientName", required = false) String patientName,
|
||||
@@ -189,83 +88,13 @@ public class InfectionEnhancedController {
|
||||
@RequestParam(value = "isolationStatus", required = false) Integer isolationStatus,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) {
|
||||
LambdaQueryWrapper<MultiDrugResistant> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.like(StringUtils.hasText(patientName), MultiDrugResistant::getPatientName, patientName)
|
||||
.like(StringUtils.hasText(bacteriaName), MultiDrugResistant::getBacteriaName, bacteriaName)
|
||||
.eq(isolationStatus != null, MultiDrugResistant::getIsolationStatus, isolationStatus)
|
||||
.orderByDesc(MultiDrugResistant::getReportDate);
|
||||
return R.ok(mdrService.page(new Page<>(pageNo, pageSize), wrapper));
|
||||
return R.ok(enhancedAppService.getMultiDrugPage(patientName, bacteriaName, isolationStatus, pageNo, pageSize));
|
||||
}
|
||||
|
||||
@Operation(summary = "记录多重耐药菌")
|
||||
@PreAuthorize("@ss.hasPermi('infection:infection:edit')")
|
||||
@PostMapping("/mdr/add")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public R<?> addMdr(@RequestBody MultiDrugResistant mdr) {
|
||||
mdr.setIsolationStatus(0);
|
||||
mdr.setStatus(0);
|
||||
mdr.setCreateTime(new Date());
|
||||
mdrService.save(mdr);
|
||||
return R.ok(mdr);
|
||||
}
|
||||
|
||||
@PostMapping("/mdr/isolate")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public R<?> isolateMdr(@RequestBody Map<String, Object> params) {
|
||||
Long id = Long.valueOf(params.get("id").toString());
|
||||
MultiDrugResistant mdr = mdrService.getById(id);
|
||||
if (mdr == null) return R.fail("记录不存在");
|
||||
mdr.setIsolationStatus(1);
|
||||
mdr.setIsolationStartDate(new Date());
|
||||
mdr.setUpdateTime(new Date());
|
||||
mdrService.updateById(mdr);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@PostMapping("/mdr/release")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public R<?> releaseMdr(@RequestParam Long id) {
|
||||
MultiDrugResistant mdr = mdrService.getById(id);
|
||||
if (mdr == null) return R.fail("记录不存在");
|
||||
mdr.setIsolationStatus(2);
|
||||
mdr.setIsolationEndDate(new Date());
|
||||
mdr.setUpdateTime(new Date());
|
||||
mdrService.updateById(mdr);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
// ==================== 环境卫生学监测 ====================
|
||||
|
||||
@GetMapping("/env-monitor/page")
|
||||
public R<?> getEnvMonitorPage(
|
||||
@RequestParam(value = "departmentName", required = false) String deptName,
|
||||
@RequestParam(value = "monitorType", required = false) String monitorType,
|
||||
@RequestParam(value = "result", required = false) String result,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) {
|
||||
LambdaQueryWrapper<EnvironmentalMonitor> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.like(StringUtils.hasText(deptName), EnvironmentalMonitor::getDepartmentName, deptName)
|
||||
.eq(StringUtils.hasText(monitorType), EnvironmentalMonitor::getMonitorType, monitorType)
|
||||
.eq(StringUtils.hasText(result), EnvironmentalMonitor::getResult, result)
|
||||
.orderByDesc(EnvironmentalMonitor::getMonitorDate);
|
||||
return R.ok(envMonitorService.page(new Page<>(pageNo, pageSize), wrapper));
|
||||
}
|
||||
|
||||
@PostMapping("/env-monitor/add")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public R<?> addEnvMonitor(@RequestBody EnvironmentalMonitor env) {
|
||||
env.setCreateTime(new Date());
|
||||
envMonitorService.save(env);
|
||||
return R.ok(env);
|
||||
}
|
||||
|
||||
@GetMapping("/env-monitor/stats")
|
||||
public R<?> getEnvMonitorStats() {
|
||||
Map<String, Object> stats = new HashMap<>();
|
||||
LambdaQueryWrapper<EnvironmentalMonitor> wrapper = new LambdaQueryWrapper<>();
|
||||
stats.put("total", envMonitorService.count(wrapper));
|
||||
wrapper.eq(EnvironmentalMonitor::getResult, "合格");
|
||||
stats.put("qualified", envMonitorService.count(wrapper));
|
||||
wrapper.eq(EnvironmentalMonitor::getResult, "不合格");
|
||||
stats.put("unqualified", envMonitorService.count(wrapper));
|
||||
return R.ok(stats);
|
||||
public R<?> addMdr(@RequestBody Map<String, Object> params) {
|
||||
return R.ok(enhancedAppService.recordMultiDrug(params));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user