diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/IndividualCaseController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/IndividualCaseController.java new file mode 100644 index 0000000..dd78286 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/IndividualCaseController.java @@ -0,0 +1,40 @@ +package com.lyms.platform.operate.web.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.lyms.platform.common.annotation.TokenRequired; +import com.lyms.platform.common.base.BaseController; +import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.operate.web.service.IndividualCaseService; + +/** + * @author dongqin + * @description 个案 + * @date 15:59 2019/11/21 + **/ +@Controller +@RequestMapping("/individualCase") +public class IndividualCaseController extends BaseController { + + @Autowired + IndividualCaseService service; + + /** + * 产前妊娠风险评估记录 + * + * @param pid + * @return + */ + @RequestMapping(method = RequestMethod.GET, value = "/highRiskList") + @ResponseBody + @TokenRequired + public BaseResponse highRiskList(String pid) { + return service.highRiskList(pid); + } + + +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/IndividualCaseResult.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/IndividualCaseResult.java new file mode 100644 index 0000000..c7a95f8 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/IndividualCaseResult.java @@ -0,0 +1,104 @@ +package com.lyms.platform.operate.web.result; + +import java.io.Serializable; +import java.util.List; + +/** + * @author dongqin + * @description + * @date 13:50 2019/11/22 + **/ +public class IndividualCaseResult implements Serializable { + + private static final long serialVersionUID = 1634160181617894592L; + + private String name; + + private String idCard; + + private String doctorStr; + + private List list; + + private String highRiskDesc; + + private String timeAxisStr; + + public String getTimeAxisStr() { + return timeAxisStr; + } + + public void setTimeAxisStr(String timeAxisStr) { + this.timeAxisStr = timeAxisStr; + } + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getDoctorStr() { + return doctorStr; + } + + public void setDoctorStr(String doctorStr) { + this.doctorStr = doctorStr; + } + + public String getHighRiskDesc() { + return highRiskDesc; + } + + public void setHighRiskDesc(String highRiskDesc) { + this.highRiskDesc = highRiskDesc; + } + + public static class Infos { + private String level; + private String name; + private String desc; + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getLevel() { + return level; + } + + public void setLevel(String level) { + this.level = level; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IndividualCaseService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IndividualCaseService.java new file mode 100644 index 0000000..b85f4e2 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IndividualCaseService.java @@ -0,0 +1,14 @@ +package com.lyms.platform.operate.web.service; + +import com.lyms.platform.common.result.BaseResponse; + +public interface IndividualCaseService { + + /** + * 产前妊娠风险评估记录 + * + * @param parentId + * @return + */ + BaseResponse highRiskList(String parentId); +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/IndividualCaseServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/IndividualCaseServiceImpl.java new file mode 100644 index 0000000..b99aeed --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/IndividualCaseServiceImpl.java @@ -0,0 +1,141 @@ +package com.lyms.platform.operate.web.service.impl; + +import java.util.Date; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.stereotype.Service; + +import com.lyms.platform.biz.service.HosptialHighRiskService; +import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.JsonUtil; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.operate.web.result.IndividualCaseResult; +import com.lyms.platform.operate.web.service.IndividualCaseService; +import com.lyms.platform.operate.web.utils.CollectionUtils; +import com.lyms.platform.operate.web.utils.ResolveUtils; +import com.lyms.platform.permission.model.Users; +import com.lyms.platform.permission.service.UsersService; +import com.lyms.platform.pojo.AntExChuModel; +import com.lyms.platform.pojo.AntenatalExaminationModel; +import com.lyms.platform.pojo.BasicConfig; +import com.lyms.platform.pojo.HosptialHighRisk; +import com.lyms.platform.pojo.Patients; +import com.lyms.platform.pojo.PersonModel; + +@Service +public class IndividualCaseServiceImpl implements IndividualCaseService { + + @Autowired + private MongoTemplate mongoTemplate; + + @Autowired + private UsersService usersService; + + @Autowired + private HosptialHighRiskService hosptialHighRiskService; + + /** + * 产前妊娠风险评估记录 + * + * @param personId + * @return + */ + @Override + public BaseResponse highRiskList(String personId) { + + List results = new LinkedList<>(); + List personModels = mongoTemplate.find(Query.query(Criteria.where("id").is(personId)), PersonModel.class); + if (CollectionUtils.isNotEmpty(personModels)) { + List patients = mongoTemplate.find(Query.query(Criteria.where("pid").is(personId)).with(new Sort(Sort.Direction.ASC, "created")), Patients.class); + if (CollectionUtils.isNotEmpty(patients)) { + Patients patient = patients.get(0); + String patientId = patient.getId(); + List antExChuModels = mongoTemplate.find(Query.query(Criteria.where("parentId").is(patientId)), AntExChuModel.class); + if (CollectionUtils.isNotEmpty(antExChuModels)) { + AntExChuModel antExChuModel = antExChuModels.get(0); + String highRisks = antExChuModel.getHighrisk(); + String otherHighRisk = antExChuModel.getOtherHighRisk(); + IndividualCaseResult result = getInfosIndividualCaseResult(patient, antExChuModel.getProdDoctor(), highRisks, antExChuModel.getHighriskDesc(), otherHighRisk, antExChuModel.getCheckTime()); + results.add(result); + + } + List antenatalExaminationModels = mongoTemplate.find(Query.query(Criteria.where("parentId").is(patientId)).with(new Sort(Sort.Direction.ASC, "created")), AntenatalExaminationModel.class); + if (CollectionUtils.isNotEmpty(antenatalExaminationModels)) { + for (AntenatalExaminationModel examinationModel : antenatalExaminationModels) { + String riskFactors = examinationModel.getRiskFactor(); + String otherRisk = examinationModel.getOtherRisk(); + IndividualCaseResult result = getInfosIndividualCaseResult(patient, examinationModel.getCheckDoctor(), riskFactors, examinationModel.getHighriskDesc(), otherRisk, examinationModel.getCheckDate()); + results.add(result); + + } + } + BaseResponse baseResponse = new BaseResponse(); + baseResponse.setObject(results); + return baseResponse; + + } + } + return new BaseResponse(); + } + + /** + * 组装返回至前端对象 + * + * @param patient 建档对象 + * @param doctor 产检医生id + * @param highRisks 高危ids + * @param highRiskDesc 高危说明 + * @param otherHighRisk 自定义高危 + * @param checkTime 产检时间 + * @return + */ + private IndividualCaseResult getInfosIndividualCaseResult(Patients patient, String doctor, String highRisks, String highRiskDesc, String otherHighRisk, Date checkTime) { + List list = JsonUtil.toList(highRisks, String.class); + IndividualCaseResult result = new IndividualCaseResult<>(); + result.setName(patient.getUsername()); + result.setIdCard(patient.getCardNo()); + Users users = usersService.getUsers(Integer.parseInt(doctor)); + result.setDoctorStr(users.getName()); + result.setHighRiskDesc(highRiskDesc); + if (checkTime != null) { + result.setTimeAxisStr(DateUtil.getyyyy_MM_dd(checkTime)); + } + List infos = new LinkedList<>(); + for (String higRisk : list) { + IndividualCaseResult.Infos info = new IndividualCaseResult.Infos(); + BasicConfig basicConfig = mongoTemplate.findOne(Query.query(Criteria.where("id").is(higRisk)), BasicConfig.class); + info.setName(basicConfig.getName()); + BasicConfig typeConfig = mongoTemplate.findOne(Query.query(Criteria.where("id").is(basicConfig.getParentId())), BasicConfig.class); + info.setLevel(typeConfig.getWeight().toString()); + info.setDesc(typeConfig.getName()); + infos.add(info); + } + if (StringUtils.isNotEmpty(otherHighRisk)) { + List> mapList = new LinkedList<>(); + List> maps = ResolveUtils.queryOtherRisk(otherHighRisk, mapList); + for (Map map : maps) { + // {"fxysu":"123123","fyyse":"49a36aea-c5b6-4162-87d2-9eb3c6ec00c2","fxpf":"5769f0640cf2d37f034793a3","otherId":"5a5872d2c07de7aba3b5f505"} + String otherId = map.get("otherId").toString(); + HosptialHighRisk hosptialHighRisk = hosptialHighRiskService.getOneHosptialHighRiskById(otherId); + BasicConfig basicConfig = mongoTemplate.findOne(Query.query(Criteria.where("id").is(hosptialHighRisk.getColor())), BasicConfig.class); + IndividualCaseResult.Infos info = new IndividualCaseResult.Infos(); + info.setName(hosptialHighRisk.getName()); + info.setLevel(basicConfig.getWeight().toString()); + info.setDesc(basicConfig.getName()); + infos.add(info); + } + } + result.setList(infos); + return result; + } + + +}