feat(phase3): 壮医中医特色+传染病直报 — Phase 3 广西地方特色
壮医中医特色模块 (TCM): - 后端: 2 Entity + 2 Mapper + 2 Service + AppService(5方法) + Controller(5接口) - 功能: 中医方剂管理(含壮药) + 体质辨识(九种体质) + 统计 传染病直报模块 (Epidemic): - 后端: 1 Entity + 1 Mapper + 1 Service + AppService(4方法) + Controller(4接口) - 功能: 传染病上报 + 疾控确认 + 列表查询 + 统计 编译验证: BUILD SUCCESS
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
package com.healthlink.his.web.epidemic.appservice;
|
||||
import com.healthlink.his.epidemic.domain.EpidemicReport;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
public interface IEpidemicAppService {
|
||||
EpidemicReport report(EpidemicReport r);
|
||||
void confirmReport(Long id, String cdcNo);
|
||||
List<EpidemicReport> getReports(String status);
|
||||
Map<String, Object> getStatistics(String startDate, String endDate);
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.healthlink.his.web.epidemic.appservice.impl;
|
||||
import com.healthlink.his.epidemic.domain.EpidemicReport;
|
||||
import com.healthlink.his.epidemic.service.IEpidemicReportService;
|
||||
import com.healthlink.his.web.epidemic.appservice.IEpidemicAppService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.*;
|
||||
@Service
|
||||
public class EpidemicAppServiceImpl implements IEpidemicAppService {
|
||||
@Autowired private IEpidemicReportService reportService;
|
||||
@Override
|
||||
public EpidemicReport report(EpidemicReport r) { r.setStatus("PENDING"); r.setDelFlag("0"); r.setReportDate(new Date()); reportService.save(r); return r; }
|
||||
@Override
|
||||
public void confirmReport(Long id, String cdcNo) {
|
||||
EpidemicReport r = reportService.getById(id); r.setStatus("CONFIRMED"); r.setCdcConfirmNo(cdcNo); reportService.updateById(r);
|
||||
}
|
||||
@Override
|
||||
public List<EpidemicReport> getReports(String status) {
|
||||
return reportService.list(new LambdaQueryWrapper<EpidemicReport>().eq(status != null, EpidemicReport::getStatus, status).eq(EpidemicReport::getDelFlag, "0"));
|
||||
}
|
||||
@Override
|
||||
public Map<String, Object> getStatistics(String startDate, String endDate) {
|
||||
Map<String, Object> r = new HashMap<>();
|
||||
r.put("total", reportService.count(new LambdaQueryWrapper<EpidemicReport>().eq(EpidemicReport::getDelFlag, "0")));
|
||||
r.put("pending", reportService.count(new LambdaQueryWrapper<EpidemicReport>().eq(EpidemicReport::getStatus, "PENDING")));
|
||||
r.put("confirmed", reportService.count(new LambdaQueryWrapper<EpidemicReport>().eq(EpidemicReport::getStatus, "CONFIRMED")));
|
||||
return r;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.healthlink.his.web.epidemic.controller;
|
||||
import com.core.common.core.domain.AjaxResult;
|
||||
import com.healthlink.his.epidemic.domain.EpidemicReport;
|
||||
import com.healthlink.his.web.epidemic.appservice.IEpidemicAppService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@Tag(name = "传染病直报") @RestController @RequestMapping("/healthlink-his/api/v1/epidemic")
|
||||
public class EpidemicController {
|
||||
@Autowired private IEpidemicAppService epidemicAppService;
|
||||
@Operation(summary = "上报") @PostMapping("/report")
|
||||
public AjaxResult report(@RequestBody EpidemicReport r) { return AjaxResult.success(epidemicAppService.report(r)); }
|
||||
@Operation(summary = "确认") @PutMapping("/confirm/{id}")
|
||||
public AjaxResult confirm(@PathVariable Long id, @RequestParam String cdcNo) { epidemicAppService.confirmReport(id, cdcNo); return AjaxResult.success(); }
|
||||
@Operation(summary = "列表") @GetMapping("/list")
|
||||
public AjaxResult list(@RequestParam(required = false) String status) { return AjaxResult.success(epidemicAppService.getReports(status)); }
|
||||
@Operation(summary = "统计") @GetMapping("/statistics")
|
||||
public AjaxResult statistics(@RequestParam(required = false) String s, @RequestParam(required = false) String e) { return AjaxResult.success(epidemicAppService.getStatistics(s, e)); }
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.healthlink.his.web.tcm.appservice;
|
||||
import com.healthlink.his.tcm.domain.*;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
public interface ITcmAppService {
|
||||
List<TcmPrescription> getPrescriptions(String type);
|
||||
TcmPrescription savePrescription(TcmPrescription p);
|
||||
TcmConstitutionAssessment assess(TcmConstitutionAssessment a);
|
||||
List<TcmConstitutionAssessment> getAssessmentsByEncounter(Long encounterId);
|
||||
Map<String, Object> getStatistics();
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.healthlink.his.web.tcm.appservice.impl;
|
||||
import com.healthlink.his.tcm.domain.*;
|
||||
import com.healthlink.his.tcm.service.*;
|
||||
import com.healthlink.his.web.tcm.appservice.ITcmAppService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.*;
|
||||
@Service
|
||||
public class TcmAppServiceImpl implements ITcmAppService {
|
||||
@Autowired private ITcmPrescriptionService prescriptionService;
|
||||
@Autowired private ITcmConstitutionAssessmentService assessmentService;
|
||||
|
||||
@Override
|
||||
public List<TcmPrescription> getPrescriptions(String type) {
|
||||
return prescriptionService.list(new LambdaQueryWrapper<TcmPrescription>()
|
||||
.eq(type != null, TcmPrescription::getPrescriptionType, type)
|
||||
.eq(TcmPrescription::getEnabled, "1").eq(TcmPrescription::getDelFlag, "0"));
|
||||
}
|
||||
@Override
|
||||
public TcmPrescription savePrescription(TcmPrescription p) { p.setDelFlag("0"); p.setEnabled("1"); prescriptionService.save(p); return p; }
|
||||
@Override
|
||||
public TcmConstitutionAssessment assess(TcmConstitutionAssessment a) { a.setDelFlag("0"); assessmentService.save(a); return a; }
|
||||
@Override
|
||||
public List<TcmConstitutionAssessment> getAssessmentsByEncounter(Long encounterId) {
|
||||
return assessmentService.list(new LambdaQueryWrapper<TcmConstitutionAssessment>()
|
||||
.eq(TcmConstitutionAssessment::getEncounterId, encounterId).eq(TcmConstitutionAssessment::getDelFlag, "0"));
|
||||
}
|
||||
@Override
|
||||
public Map<String, Object> getStatistics() {
|
||||
Map<String, Object> r = new HashMap<>();
|
||||
r.put("totalPrescriptions", prescriptionService.count(new LambdaQueryWrapper<TcmPrescription>().eq(TcmPrescription::getDelFlag, "0")));
|
||||
r.put("totalAssessments", assessmentService.count(new LambdaQueryWrapper<TcmConstitutionAssessment>().eq(TcmConstitutionAssessment::getDelFlag, "0")));
|
||||
return r;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.healthlink.his.web.tcm.controller;
|
||||
import com.core.common.core.domain.AjaxResult;
|
||||
import com.healthlink.his.tcm.domain.*;
|
||||
import com.healthlink.his.web.tcm.appservice.ITcmAppService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import java.util.List;
|
||||
@Tag(name = "壮医中医特色") @RestController @RequestMapping("/healthlink-his/api/v1/tcm")
|
||||
public class TcmController {
|
||||
@Autowired private ITcmAppService tcmAppService;
|
||||
@Operation(summary = "中医方剂列表") @GetMapping("/prescriptions")
|
||||
public AjaxResult prescriptions(@RequestParam(required = false) String type) { return AjaxResult.success(tcmAppService.getPrescriptions(type)); }
|
||||
@Operation(summary = "新增方剂") @PostMapping("/prescription")
|
||||
public AjaxResult savePrescription(@RequestBody TcmPrescription p) { return AjaxResult.success(tcmAppService.savePrescription(p)); }
|
||||
@Operation(summary = "体质辨识") @PostMapping("/constitution")
|
||||
public AjaxResult assess(@RequestBody TcmConstitutionAssessment a) { return AjaxResult.success(tcmAppService.assess(a)); }
|
||||
@Operation(summary = "体质辨识记录") @GetMapping("/constitution/encounter/{encounterId}")
|
||||
public AjaxResult getAssessments(@PathVariable Long encounterId) { return AjaxResult.success(tcmAppService.getAssessmentsByEncounter(encounterId)); }
|
||||
@Operation(summary = "统计") @GetMapping("/statistics")
|
||||
public AjaxResult statistics() { return AjaxResult.success(tcmAppService.getStatistics()); }
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.healthlink.his.epidemic.domain;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors;
|
||||
import java.util.Date;
|
||||
@Data @TableName("epidemic_report") @Accessors(chain = true) @EqualsAndHashCode(callSuper = false)
|
||||
public class EpidemicReport extends HisBaseEntity {
|
||||
@TableId(type = IdType.ASSIGN_ID) private Long id;
|
||||
private Long encounterId; private Long patientId; private String patientName;
|
||||
private String diseaseName; private String diseaseCode; private String reportType;
|
||||
private String reporterId; private String reporterName;
|
||||
private Date reportDate; private String status;
|
||||
private String cdcConfirmNo; private String delFlag;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.healthlink.his.epidemic.mapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.healthlink.his.epidemic.domain.EpidemicReport;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@Mapper public interface EpidemicReportMapper extends BaseMapper<EpidemicReport> {}
|
||||
@@ -0,0 +1,4 @@
|
||||
package com.healthlink.his.epidemic.service;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.healthlink.his.epidemic.domain.EpidemicReport;
|
||||
public interface IEpidemicReportService extends IService<EpidemicReport> {}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.healthlink.his.epidemic.service.impl;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.healthlink.his.epidemic.domain.EpidemicReport;
|
||||
import com.healthlink.his.epidemic.mapper.EpidemicReportMapper;
|
||||
import com.healthlink.his.epidemic.service.IEpidemicReportService;
|
||||
import org.springframework.stereotype.Service;
|
||||
@Service public class EpidemicReportServiceImpl extends ServiceImpl<EpidemicReportMapper, EpidemicReport> implements IEpidemicReportService {}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.healthlink.his.tcm.domain;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors;
|
||||
import java.util.Date;
|
||||
@Data @TableName("tcm_constitution_assessment") @Accessors(chain = true) @EqualsAndHashCode(callSuper = false)
|
||||
public class TcmConstitutionAssessment extends HisBaseEntity {
|
||||
@TableId(type = IdType.ASSIGN_ID) private Long id;
|
||||
private Long encounterId; private Long patientId;
|
||||
private String constitutionType; private Integer score;
|
||||
private String recommendation; private Long assessorId;
|
||||
private Date assessmentTime; private String delFlag;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.healthlink.his.tcm.domain;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors;
|
||||
@Data @TableName("tcm_prescription") @Accessors(chain = true) @EqualsAndHashCode(callSuper = false)
|
||||
public class TcmPrescription extends HisBaseEntity {
|
||||
@TableId(type = IdType.ASSIGN_ID) private Long id;
|
||||
private String prescriptionName; private String prescriptionType;
|
||||
private String herbs; private String dosage; private String usage;
|
||||
private String indication; private String source; private String enabled; private String delFlag;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.healthlink.his.tcm.mapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.healthlink.his.tcm.domain.TcmConstitutionAssessment;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@Mapper public interface TcmConstitutionAssessmentMapper extends BaseMapper<TcmConstitutionAssessment> {}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.healthlink.his.tcm.mapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.healthlink.his.tcm.domain.TcmPrescription;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@Mapper public interface TcmPrescriptionMapper extends BaseMapper<TcmPrescription> {}
|
||||
@@ -0,0 +1,4 @@
|
||||
package com.healthlink.his.tcm.service;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.healthlink.his.tcm.domain.TcmConstitutionAssessment;
|
||||
public interface ITcmConstitutionAssessmentService extends IService<TcmConstitutionAssessment> {}
|
||||
@@ -0,0 +1,4 @@
|
||||
package com.healthlink.his.tcm.service;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.healthlink.his.tcm.domain.TcmPrescription;
|
||||
public interface ITcmPrescriptionService extends IService<TcmPrescription> {}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.healthlink.his.tcm.service.impl;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.healthlink.his.tcm.domain.TcmConstitutionAssessment;
|
||||
import com.healthlink.his.tcm.mapper.TcmConstitutionAssessmentMapper;
|
||||
import com.healthlink.his.tcm.service.ITcmConstitutionAssessmentService;
|
||||
import org.springframework.stereotype.Service;
|
||||
@Service public class TcmConstitutionAssessmentServiceImpl extends ServiceImpl<TcmConstitutionAssessmentMapper, TcmConstitutionAssessment> implements ITcmConstitutionAssessmentService {}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.healthlink.his.tcm.service.impl;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.healthlink.his.tcm.domain.TcmPrescription;
|
||||
import com.healthlink.his.tcm.mapper.TcmPrescriptionMapper;
|
||||
import com.healthlink.his.tcm.service.ITcmPrescriptionService;
|
||||
import org.springframework.stereotype.Service;
|
||||
@Service public class TcmPrescriptionServiceImpl extends ServiceImpl<TcmPrescriptionMapper, TcmPrescription> implements ITcmPrescriptionService {}
|
||||
Reference in New Issue
Block a user