diff --git a/platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java b/platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java index 6e62d78..ae0cdd1 100644 --- a/platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java +++ b/platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java @@ -29,6 +29,7 @@ public enum SerialIdEnum { TrackDayConfig("TrackDayConfig", 97531320170L), BCInventoryModel("BCInventoryModel", 97531000110L), TrackCountRecord("TrackCountRecord", 92231000110L), + AutoRiskRecord("AutoRiskRecord", 97231000110L), BCTransferInHistoryModel("BCTransferInHistoryModel", 97531000120L), CommunityConfig("CommunityConfig", 97531000130L), CommunityModel("CommunityModel", 97531000140L), diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/AutoRiskRecord.java b/platform-dal/src/main/java/com/lyms/platform/pojo/AutoRiskRecord.java new file mode 100644 index 0000000..a67dff3 --- /dev/null +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/AutoRiskRecord.java @@ -0,0 +1,138 @@ +package com.lyms.platform.pojo; + +import com.lyms.platform.beans.SerialIdEnum; +import com.lyms.platform.common.result.BaseModel; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; +import java.util.List; + + +/** + * 处方报表基础项配置 + */ +@Document(collection="lyms_auto_risk_record") +public class AutoRiskRecord extends BaseModel { + + private static final long serialVersionUID = SerialIdEnum.TrackCountRecord.getCid(); + + private String id; + private String fid; + private String hospitalId; + private String pid; + private String patientId; + //高危评分 + private Integer hScore; + //高危等级 + private List hLevel; + //风险因素 + private List hRisk; + private Date created; + private Date modified; + //状态 0 未确认 已经确认 + private Integer status; + //诊断来源 0建档 1产检 + private Integer type; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getFid() { + return fid; + } + + public void setFid(String fid) { + this.fid = fid; + } + + public String getHospitalId() { + return hospitalId; + } + + public void setHospitalId(String hospitalId) { + this.hospitalId = hospitalId; + } + + public String getPid() { + return pid; + } + + public void setPid(String pid) { + this.pid = pid; + } + + public String getPatientId() { + return patientId; + } + + public void setPatientId(String patientId) { + this.patientId = patientId; + } + + public Integer gethScore() { + return hScore; + } + + public void sethScore(Integer hScore) { + this.hScore = hScore; + } + + public List gethLevel() { + return hLevel; + } + + public void sethLevel(List hLevel) { + this.hLevel = hLevel; + } + + public List gethRisk() { + return hRisk; + } + + public void sethRisk(List hRisk) { + this.hRisk = hRisk; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getModified() { + return modified; + } + + public void setModified(Date modified) { + this.modified = modified; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + + + + + +} \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AntenatalExaminationController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AntenatalExaminationController.java index 9e5e5db..a565b1a 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AntenatalExaminationController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AntenatalExaminationController.java @@ -400,7 +400,7 @@ public class AntenatalExaminationController extends BaseController { @RequestMapping(method = RequestMethod.POST, value = "/getAntexExRisk") @ResponseBody @TokenRequired - public BaseResponse getAntexExRisk(@Valid @RequestBody AntExcAddRequest antExcAddRequest, HttpServletRequest request) { + public BaseResponse getAntexExRisk(@Valid @RequestBody AutoRiskRequest antExcAddRequest, HttpServletRequest request) { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); BaseResponse baseResponse = antenatalExaminationFacade.getAntexExRisk(antExcAddRequest, loginState.getId()); return baseResponse; @@ -497,7 +497,20 @@ public class AntenatalExaminationController extends BaseController { return antExRecordFacade.getActualReport(checkTime,getUserId(request)); } - + /** + * 自动诊断列表 + * @param antExManagerQueryRequest + * @param request + * @return + */ + @RequestMapping(method = RequestMethod.POST, value = "/getAutoRiskRecord") + @ResponseBody + @TokenRequired + public BaseResponse getAutoRiskRecord(@Valid AntExManagerQueryRequest antExManagerQueryRequest, HttpServletRequest request) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + BaseResponse baseResponse = antenatalExaminationFacade.getAutoRiskRecord(antExManagerQueryRequest, loginState.getId()); + return baseResponse; + } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java index 9c2aae1..9f9a6d8 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java @@ -9,8 +9,10 @@ import com.lyms.platform.biz.dal.IPatientDao; import com.lyms.platform.biz.dal.ISieveDao; import com.lyms.platform.biz.service.*; import com.lyms.platform.common.constants.ErrorCodeConstants; +import com.lyms.platform.common.dao.BaseQuery; import com.lyms.platform.common.dao.operator.MongoQuery; import com.lyms.platform.common.enums.*; +import com.lyms.platform.common.result.BaseListResponse; import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.common.utils.*; @@ -4124,11 +4126,80 @@ public class AntenatalExaminationFacade { } - public BaseResponse getAntexExRisk(AntExcAddRequest antExcAddRequest, Integer userId) { + public void autoPatientRisk(Patients pat,Integer userId) + { + AutoRiskRequest autoRiskRequest = new AutoRiskRequest(); + autoRiskRequest.setParentId(pat.getId()); + List> riskList = autoRisk(autoRiskRequest, pat.getHospitalId()); + saveAutoRisk(riskList,null,pat.getHospitalId(),pat.getPid(),pat.getId(),0); + } - Set list = new HashSet<>(); + /** + * + * @param risks 高危因素 + * @param fid 产检id(初诊、复诊) + * @param hospitalId 医院id + * @param pid + * @param patientId + * @param type 0 建档诊断 1产检诊断 + */ + private void saveAutoRisk(List> risks,String fid,String hospitalId,String pid,String patientId,Integer type) + { + if (CollectionUtils.isNotEmpty(risks)) + { + List rLevel = new ArrayList(); + List hRisk = new ArrayList(); + Integer score = 0; + for(Map risk : risks) + { + rLevel.add(risk.get("riskLevel")); + hRisk.add(risk.get("id")); + score+= StringUtils.isNotEmpty(risk.get("code")) ? Integer.parseInt(risk.get("code")) : 0; + } + AutoRiskRecord riskRecord = new AutoRiskRecord(); + riskRecord.setPatientId(patientId); + riskRecord.setFid(fid); + riskRecord.setPid(pid); + riskRecord.setHospitalId(hospitalId); + riskRecord.setStatus(0); + riskRecord.setType(type); + riskRecord.sethRisk(hRisk); + riskRecord.sethLevel(rLevel); + riskRecord.sethScore(score); + riskRecord.setCreated(new Date()); + riskRecord.setModified(new Date()); + mongoTemplate.save(riskRecord); + + } + + } + + + /** + * + * 由初诊页面调用该方法 + * 初诊自动判定高危因素 + * @param antExcAddRequest + * @param userId + * @return + */ + public BaseResponse getAntexExRisk(AutoRiskRequest antExcAddRequest, Integer userId) { String hospitalId = autoMatchFacade.getHospitalId(userId); + List> riskList = autoRisk(antExcAddRequest,hospitalId); + + return new BaseObjectResponse().setData(riskList).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); + } + + /** + * 自动判定高危因素 + * @param antExcAddRequest + * @param hospitalId + * @return + */ + private List> autoRisk(AutoRiskRequest antExcAddRequest,String hospitalId) + { + Set list = new HashSet<>(); DiagnoseConfigQuery diagnoseConfigQuery = new DiagnoseConfigQuery(); diagnoseConfigQuery.setHospitalId(hospitalId); @@ -4143,7 +4214,7 @@ public class AntenatalExaminationFacade { List> configs = model.getConfigs(); if (model == null || "0".equals(model.getEnable()) || configs == null || configs.size() == 0) { - return new BaseObjectResponse().setData(riskList).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); + return riskList; } if (CollectionUtils.isNotEmpty(configs)) { for (Map map : configs) { @@ -5247,8 +5318,7 @@ public class AntenatalExaminationFacade { } riskList = diagnoseConfigFacde.getRiskName(ids); } - - return new BaseObjectResponse().setData(riskList).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); + return riskList; } @@ -5345,4 +5415,69 @@ public class AntenatalExaminationFacade { } + public BaseResponse getAutoRiskRecord(AntExManagerQueryRequest antExManagerQueryRequest, Integer id) { + + PatientsQuery patientsQuery = new PatientsQuery(); + List patientses = null; + if (StringUtils.isNotEmpty(antExManagerQueryRequest.getQueryNo())) { + patientsQuery.setQueryNo(antExManagerQueryRequest.getQueryNo()); + patientses = patientsService.queryPatient1(patientsQuery, "created"); + } + + List patientIds = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(patientses)) + { + for (Patients pat : patientses) + { + patientIds.add(pat.getId()); + } + } + + Query query = new Query(); + if (CollectionUtils.isNotEmpty(patientIds)) { + query.addCriteria(Criteria.where("patientId").in(patientIds)); + } + if (StringUtils.isNotEmpty(antExManagerQueryRequest.getAutoTime())) { + String[] arrs = antExManagerQueryRequest.getAutoTime().split(" - "); + Date startDate = DateUtil.parseYMD(arrs[0]); + Date dayFirstSecond = DateUtil.getDayFirstSecond(startDate); + Date endDate = DateUtil.parseYMD(arrs[1]); + Date dayLastSecond = DateUtil.getDayLastSecond(endDate); + query.addCriteria(Criteria.where("created").gte(dayFirstSecond).lte(dayLastSecond)); + } + if (antExManagerQueryRequest.getStatus() != null) { + query.addCriteria(Criteria.where("status").in(antExManagerQueryRequest.getStatus())); + } + + long count = mongoTemplate.count(query, AutoRiskRecord.class); + + BaseQuery baseQuery = new BaseQuery(); + baseQuery.mysqlBuild((int)count); + query.skip(antExManagerQueryRequest.getPage()).limit(antExManagerQueryRequest.getLimit()); + List riskList = new ArrayList(); + List models = mongoTemplate.find(query.with(new Sort(Sort.Direction.DESC, "created")), AutoRiskRecord.class); + if (CollectionUtils.isNotEmpty(models)) + { + for(AutoRiskRecord model : models) + { + Map map = new HashMap(); + map.put("id",model.getId()); + + Patients pat = patientsService.findOnePatientById(model.getPatientId()); + map.put("name",pat.getUsername()); + map.put("cardNo",pat.getCardNo()); + map.put("phone",pat.getPhone()); + map.put("autoTime",DateUtil.getyyyy_MM_dd(model.getCreated())); + map.put("week",DateUtil.getWeekDesc(pat.getLastMenses(), model.getCreated())); + map.put("riskLevel",commonService.findRiskLevel(model.gethLevel())); + String risk = commonService.resloveFactor(model.gethRisk()); + + map.put("risk",risk); + map.put("score",model.gethScore()); + map.put("score",model.getStatus() == 0 ? "未确诊" : "已确诊"); + } + } + return new BaseListResponse().setData(riskList).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setPageInfo(baseQuery.getPageInfo()); + } + } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java index 8ddac91..7dcdbe9 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java @@ -194,6 +194,7 @@ public class BookbuildingFacade { @Autowired private IBasicConfigDao basicConfigDao; + public static final String syncToV2Url = PropertiesUtils.getPropertyValue("sync_to_v2_url"); @@ -215,7 +216,7 @@ public class BookbuildingFacade { * @return */ public BaseObjectResponse addPregnantBookbuilding( - YunBookbuildingAddRequest yunRequest, Integer userId, boolean isSync) { + YunBookbuildingAddRequest yunRequest, final Integer userId, boolean isSync) { BaseObjectResponse br = new BaseObjectResponse(); PatientsQuery patientsQuery = new PatientsQuery(); @@ -485,6 +486,9 @@ public class BookbuildingFacade { yunBookbuildingService.updatePregnant(patients, tempP.getId()); } } + //自动诊断 + antenatalExaminationFacade.autoPatientRisk(patient,userId); + } }); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/DiagnoseConfigFacde.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/DiagnoseConfigFacde.java index 717136d..fbc5895 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/DiagnoseConfigFacde.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/DiagnoseConfigFacde.java @@ -265,6 +265,7 @@ public class DiagnoseConfigFacde { name = "紫色"; } map.put("color", "risk_" + RiskDefaultTypeEnum.getColor(name)); + map.put("riskLevel", basicConfigs2.get(0).getId()); } list.add(map); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/AntExManagerQueryRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/AntExManagerQueryRequest.java index 5a762c3..57f238d 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/AntExManagerQueryRequest.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/AntExManagerQueryRequest.java @@ -86,6 +86,27 @@ public class AntExManagerQueryRequest extends BasePageQueryRequest { //是否有处理意见 0否 1是 private Integer isOpinion; + //自动诊断试剂 + private String autoTime; + + private String status; + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getAutoTime() { + return autoTime; + } + + public void setAutoTime(String autoTime) { + this.autoTime = autoTime; + } + public String getTreatOpinion() { return treatOpinion; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/AutoRiskRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/AutoRiskRequest.java new file mode 100644 index 0000000..6744c5b --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/AutoRiskRequest.java @@ -0,0 +1,7 @@ +package com.lyms.platform.operate.web.request; + +/** + * Created by Administrator on 2020/2/13. + */ +public class AutoRiskRequest extends AntExcAddRequest { +}