diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PuerperaManageController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PuerperaManageController.java index 0b9f504..f18ce74 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PuerperaManageController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PuerperaManageController.java @@ -297,6 +297,17 @@ public class PuerperaManageController extends BaseController { } /** + * @author dongqin + * @description 根据身份证号,获取孕妇基本信息,此接口是对第三方提供服务的 + * @date 10:09 2019/11/18 + **/ + @RequestMapping(value = "/search", method = RequestMethod.GET) + @ResponseBody + public BaseResponse searchByIdCard(String idCard) { + return patientFacade.searchByIdCard(idCard); + } + + /** * 发送孕妇指导短信 * * @return 返回结果 diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientFacade.java index d226ca4..1c21018 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientFacade.java @@ -1,18 +1,88 @@ package com.lyms.platform.operate.web.facade; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.collections.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +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.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.stereotype.Component; +import org.springframework.util.StopWatch; + import com.lyms.platform.beans.MsgRequest; -import com.lyms.platform.biz.service.*; +import com.lyms.platform.biz.service.AntenatalExaminationService; +import com.lyms.platform.biz.service.BabyService; +import com.lyms.platform.biz.service.BasicConfigService; +import com.lyms.platform.biz.service.CommunityConfigService; +import com.lyms.platform.biz.service.DataPermissionService; +import com.lyms.platform.biz.service.DischargeAbstractMotherService; +import com.lyms.platform.biz.service.MatDeliverFollowService; +import com.lyms.platform.biz.service.MatDeliverService; +import com.lyms.platform.biz.service.PatientsService; +import com.lyms.platform.biz.service.PostReviewService; +import com.lyms.platform.biz.service.SyncDataService; import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.dao.operator.MongoCondition; import com.lyms.platform.common.dao.operator.MongoOper; -import com.lyms.platform.common.enums.*; +import com.lyms.platform.common.enums.DiseaseTypeEnums; +import com.lyms.platform.common.enums.ProjectTypeEnums; +import com.lyms.platform.common.enums.ServiceObjEnums; +import com.lyms.platform.common.enums.ServiceStatusEnums; +import com.lyms.platform.common.enums.ServiceTypeEnums; +import com.lyms.platform.common.enums.SmsServiceEnums; +import com.lyms.platform.common.enums.SmsStatusEnums; +import com.lyms.platform.common.enums.SmsTimeTypeEnums; +import com.lyms.platform.common.enums.WxTempleteIdEnums; +import com.lyms.platform.common.enums.YnEnums; 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.*; +import com.lyms.platform.common.utils.Assert; +import com.lyms.platform.common.utils.BeanUtils; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.DefenceUtils; +import com.lyms.platform.common.utils.ExcelUtil; +import com.lyms.platform.common.utils.ExceptionUtils; +import com.lyms.platform.common.utils.JsonUtil; +import com.lyms.platform.common.utils.PropertiesUtils; import com.lyms.platform.common.utils.StringUtils; -import com.lyms.platform.operate.web.request.*; -import com.lyms.platform.operate.web.result.*; +import com.lyms.platform.operate.web.request.PatientGuideSmsRequest; +import com.lyms.platform.operate.web.request.PatientManagerRequest; +import com.lyms.platform.operate.web.request.PatientQueryRequest; +import com.lyms.platform.operate.web.request.PuerperaManagerQueryRequest; +import com.lyms.platform.operate.web.request.PuerperaManagerUpdateRequest; +import com.lyms.platform.operate.web.request.PuerperaMatcherCommunityRequest; +import com.lyms.platform.operate.web.request.RiskPatientsQueryRequest; +import com.lyms.platform.operate.web.result.HealthHandbookExcelModel; +import com.lyms.platform.operate.web.result.HighScoreResult; +import com.lyms.platform.operate.web.result.KeyPregnantWomenExcelModel; +import com.lyms.platform.operate.web.result.PatientBaseResult; +import com.lyms.platform.operate.web.result.PatientManagerQueryModel; +import com.lyms.platform.operate.web.result.PatientManagerResult; +import com.lyms.platform.operate.web.result.PersonInfoByIdCard; +import com.lyms.platform.operate.web.result.PuerperaResult; +import com.lyms.platform.operate.web.result.QuanChanResult; +import com.lyms.platform.operate.web.result.QuanPatientsResult; +import com.lyms.platform.operate.web.result.RiskPatientsResult; import com.lyms.platform.operate.web.service.PatientWeightService; import com.lyms.platform.operate.web.utils.CommonsHelper; import com.lyms.platform.operate.web.utils.JxlsUtils; @@ -25,38 +95,20 @@ import com.lyms.platform.permission.model.OrganizationQuery; import com.lyms.platform.permission.model.Users; import com.lyms.platform.permission.service.OrganizationService; import com.lyms.platform.permission.service.UsersService; -import com.lyms.platform.pojo.*; +import com.lyms.platform.pojo.AntExChuModel; +import com.lyms.platform.pojo.BabyModel; +import com.lyms.platform.pojo.BasicConfig; +import com.lyms.platform.pojo.CommunityConfig; +import com.lyms.platform.pojo.DataPermissionsModel; +import com.lyms.platform.pojo.PatientWeight; +import com.lyms.platform.pojo.Patients; +import com.lyms.platform.pojo.PersonModel; +import com.lyms.platform.pojo.SieveApplyOrderModel; +import com.lyms.platform.pojo.SmsConfigModel; import com.lyms.platform.query.AntExChuQuery; import com.lyms.platform.query.BabyModelQuery; import com.lyms.platform.query.DataPermissionsModelQuery; import com.lyms.platform.query.PatientsQuery; -import jxl.Workbook; -import jxl.format.Colour; -import jxl.format.UnderlineStyle; -import jxl.write.WritableCellFormat; -import jxl.write.WritableFont; -import jxl.write.WritableSheet; -import jxl.write.WritableWorkbook; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -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.scheduling.concurrent.ThreadPoolTaskExecutor; -import org.springframework.stereotype.Component; -import org.springframework.util.StopWatch; -import scala.util.parsing.combinator.testing.Str; - -import javax.servlet.http.HttpServletResponse; -import java.io.OutputStream; -import java.util.*; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; /** * Created by Administrator on 2016/4/22 0022. @@ -120,6 +172,9 @@ public class PatientFacade { @Autowired private PatientWeightService patientWeightService; + @Autowired + private AntenatalExaminationService antenatalExaminationService; + /** * 修改产妇的社区 * @@ -1849,4 +1904,137 @@ public class PatientFacade { } return dataMap; } + + /** + * 根据身份证号,获取孕妇基本信息 + * + * @param idCard + * @return + */ + public BaseResponse searchByIdCard(String idCard) { + if (StringUtils.isEmpty(idCard)) { + return new BaseResponse("参数为空,请检查", ErrorCodeConstants.PARAMETER_ERROR); + } + List cardNo = mongoTemplate.find(Query.query(Criteria.where("cardNo").is(idCard)), PersonModel.class); + if (cardNo == null || cardNo.size() == 0) { + return new BaseResponse(); + } + PersonInfoByIdCard result = new PersonInfoByIdCard(); + PersonModel personModel = cardNo.get(0); + result.setName(personModel.getName()); + result.setIdCard(personModel.getCardNo()); + result.setAge(DateUtil.getAge(personModel.getBirth()).toString()); + result.setPhone(personModel.getPhone()); + List patients = mongoTemplate.find(Query.query(Criteria.where("pid").is(personModel.getId())).with(new Sort(Sort.Direction.DESC, "created")), Patients.class); + if (patients != null && patients.size() > 0) { + Patients patient = patients.get(0); + result.setVcNo(patient.getVcCardNo()); + String addressStr = CommonsHelper.getResidence(patient.getProvinceRegisterId(), patient.getCityRegisterId(), + patient.getAreaRegisterId(), patient.getStreetRegisterId(), patient.getAddressRegister(), basicConfigService); + result.setAddressStr(addressStr); + BasicConfig basicConfig = basicConfigService.getOneBasicConfigById(patient.getPnationId()); + if (basicConfig != null) { + result.setNationStr(basicConfig.getName()); + } + result.setLastMensesStr(DateUtil.getYmd(patient.getLastMenses())); + result.setEducationStr(CommonsHelper.getName1(patient.getPlevelTypeId(), basicConfigService)); + + List sieveApplyOrderModels = mongoTemplate.find(Query.query(Criteria.where("parentId").is(patient.getId())).with(new Sort(Sort.Direction.DESC, "created")), SieveApplyOrderModel.class); + String pregnancy = "0"; + if (sieveApplyOrderModels != null && sieveApplyOrderModels.size() > 0) { + SieveApplyOrderModel sieveApplyOrderModel = sieveApplyOrderModels.get(0); + //本次妊娠情况 + if (org.apache.commons.lang.StringUtils.isNotEmpty(sieveApplyOrderModel.getImprenation()) && "1".equals(sieveApplyOrderModel.getImprenation())) { + pregnancy = "0"; + } else if (org.apache.commons.lang.StringUtils.isNotEmpty(sieveApplyOrderModel.getOvulationInduction()) && "1".equals(sieveApplyOrderModel.getOvulationInduction())) { + pregnancy = "1"; + } else if (org.apache.commons.lang.StringUtils.isNotEmpty(sieveApplyOrderModel.getIui()) && "1".equals(sieveApplyOrderModel.getIui())) { + pregnancy = "2"; + } + } + result.setPregnancy(pregnancy); + List patientWeights = mongoTemplate.find(Query.query(Criteria.where("patientId").is(patient.getId())).with(new Sort(Sort.Direction.DESC, "created")), PatientWeight.class); + String beforeHeight = ""; + String beforeWeight = ""; + if (patientWeights != null && patientWeights.size() > 0) { + PatientWeight patientWeight = patientWeights.get(0); + beforeHeight = patientWeight.getBeforeHeight(); + beforeWeight = patientWeight.getBeforeWeight(); + } + AntExChuQuery antExChuQuery = new AntExChuQuery(); + antExChuQuery.setParentId(patient.getId()); + antExChuQuery.setYn(YnEnums.YES.getId()); + List chuModelList = antenatalExaminationService.queryAntExChu(antExChuQuery); + String hasFamilyHistory = "2"; + String yumSize = "0"; + String chanSize = "0"; + String hasBultrasound = "2"; + PersonInfoByIdCard.HistoryBirth historyBirth = new PersonInfoByIdCard.HistoryBirth(); + String hasStillbirth = "2"; + String hasStillChan = "2"; + String hasYinchan = "2"; + String hasYaowu = "2"; + String hasAbortionZR = "2"; + String hasabortionRG = "2"; + if (CollectionUtils.isNotEmpty(chuModelList)) { + AntExChuModel chuModel = chuModelList.get(0); + if (StringUtils.isNotEmpty(chuModel.getFamilyHistory())) { + hasFamilyHistory = "1"; + } + yumSize = chuModel.getPregnancyTimes().toString(); + chanSize = chuModel.getProdTime().toString(); + if (StringUtils.isNotEmpty(chuModel.getbChao())) { + hasBultrasound = "1"; + } + if (StringUtils.isEmpty(beforeWeight)) { + beforeWeight = chuModel.getYqWeight() == null ? "" : chuModel.getYqWeight(); + } + if (StringUtils.isNotEmpty(beforeHeight)) { + beforeHeight = chuModel.getHeight() == null ? "" : chuModel.getHeight(); + } + Integer stillbirth = chuModel.getStillbirth(); + if (stillbirth != null && stillbirth > 0) { + hasStillbirth = "1"; + } + Integer stillChan = chuModel.getStillChan(); + if (stillChan != null && stillChan > 0) { + hasStillChan = "1"; + } + Integer yinchan = chuModel.getYinchan(); + if (yinchan != null && yinchan > 0) { + hasYinchan = "1"; + } + Integer yaowu = chuModel.getYaowu(); + if (yaowu != null && yaowu > 0) { + hasYaowu = "1"; + } + Integer abortionZR = chuModel.getAbortionZR(); + if (abortionZR != null && abortionZR > 0) { + hasAbortionZR = "1"; + } + Integer abortionRG = chuModel.getAbortionRG(); + if (abortionRG != null && abortionRG > 0) { + hasabortionRG = "1"; + } + } + result.setYumSize(yumSize); + result.setChanSize(chanSize); + result.setHasFamilyHistory(hasFamilyHistory); + result.setBultrasound(hasBultrasound); + result.setBeforeHeight(beforeHeight); + result.setYqWeight(beforeWeight); + + historyBirth.setHasStillbirth(hasStillbirth); + historyBirth.setHasStillChan(hasStillChan); + historyBirth.setHasYinchan(hasYinchan); + historyBirth.setHasYaowu(hasYaowu); + historyBirth.setHasAbortionZR(hasAbortionZR); + historyBirth.setHasAbortionRG(hasabortionRG); + result.setHistoryBirth(historyBirth); + + } + BaseResponse baseResponse = new BaseResponse(); + baseResponse.setObject(result); + return baseResponse; + } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PersonInfoByIdCard.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PersonInfoByIdCard.java new file mode 100644 index 0000000..6b38720 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PersonInfoByIdCard.java @@ -0,0 +1,317 @@ +package com.lyms.platform.operate.web.result; + +import java.io.Serializable; +import java.util.Map; + +/** + * @author dongqin + * @description + * @date 10:36 2019/11/18 + **/ +public class PersonInfoByIdCard implements Serializable { + + private static final long serialVersionUID = 7973585163106585788L; + + /** + * 就诊卡 + */ + private String vcNo; + + /** + * 姓名 + */ + private String name; + + /** + * 民族 + */ + private String nationStr; + + /** + * 身份证 + */ + private String idCard; + + /** + * 年龄 yyyy-mm-dd + */ + private String age; + + /** + * 手机号 + */ + private String phone; + + /** + * 住址 + */ + private String addressStr; + + /** + * 文化程度/教育 + */ + private String educationStr; + + /** + * 末次月经 + */ + private String lastMensesStr; + + /** + * 0:本次妊娠方式-自然受孕 1:本次妊娠方式-促排卵 2:本次妊娠方式-宫内人工受精 + */ + private String pregnancy; + + /** + * B超 + */ + private String bultrasound; + + /** + * 孕次 + */ + private String yumSize; + + /** + * 产次 + */ + private String chanSize; + + /** + * 生育史 + */ + private HistoryBirth historyBirth ; + + /** + * 家族史 AntExChuModelTemp + */ + private String hasFamilyHistory; + + /** + * 如果初诊也没有孕前体重和身高 就在预约建档信息中获取 + */ + private String yqWeight; + + /** + * 孕前身高 + */ + private String beforeHeight; + + + public static class HistoryBirth{ + + /** + * 死胎 + */ + private String hasStillbirth; + + /** + * 死产 + */ + private String hasStillChan; + + /** + * 引产 + */ + private String hasYinchan; + + /** + * 药物流产次数 + */ + private String hasYaowu; + + /** + * 自然流产 + */ + private String hasAbortionZR; + + /** + * 人工流产 + */ + private String hasAbortionRG; + + public String getHasStillbirth() { + return hasStillbirth; + } + + public void setHasStillbirth(String hasStillbirth) { + this.hasStillbirth = hasStillbirth; + } + + public String getHasStillChan() { + return hasStillChan; + } + + public void setHasStillChan(String hasStillChan) { + this.hasStillChan = hasStillChan; + } + + public String getHasYinchan() { + return hasYinchan; + } + + public void setHasYinchan(String hasYinchan) { + this.hasYinchan = hasYinchan; + } + + public String getHasYaowu() { + return hasYaowu; + } + + public void setHasYaowu(String hasYaowu) { + this.hasYaowu = hasYaowu; + } + + public String getHasAbortionZR() { + return hasAbortionZR; + } + + public void setHasAbortionZR(String hasAbortionZR) { + this.hasAbortionZR = hasAbortionZR; + } + + public String getHasAbortionRG() { + return hasAbortionRG; + } + + public void setHasAbortionRG(String hasAbortionRG) { + this.hasAbortionRG = hasAbortionRG; + } + } + + public String getVcNo() { + return vcNo; + } + + public void setVcNo(String vcNo) { + this.vcNo = vcNo; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNationStr() { + return nationStr; + } + + public void setNationStr(String nationStr) { + this.nationStr = nationStr; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getAge() { + return age; + } + + public void setAge(String age) { + this.age = age; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getAddressStr() { + return addressStr; + } + + public void setAddressStr(String addressStr) { + this.addressStr = addressStr; + } + + public String getEducationStr() { + return educationStr; + } + + public void setEducationStr(String educationStr) { + this.educationStr = educationStr; + } + + public String getLastMensesStr() { + return lastMensesStr; + } + + public void setLastMensesStr(String lastMensesStr) { + this.lastMensesStr = lastMensesStr; + } + + public String getPregnancy() { + return pregnancy; + } + + public void setPregnancy(String pregnancy) { + this.pregnancy = pregnancy; + } + + public String getBultrasound() { + return bultrasound; + } + + public void setBultrasound(String bultrasound) { + this.bultrasound = bultrasound; + } + + public String getYumSize() { + return yumSize; + } + + public void setYumSize(String yumSize) { + this.yumSize = yumSize; + } + + public String getChanSize() { + return chanSize; + } + + public void setChanSize(String chanSize) { + this.chanSize = chanSize; + } + + public HistoryBirth getHistoryBirth() { + return historyBirth; + } + + public void setHistoryBirth(HistoryBirth historyBirth) { + this.historyBirth = historyBirth; + } + + public String getHasFamilyHistory() { + return hasFamilyHistory; + } + + public void setHasFamilyHistory(String hasFamilyHistory) { + this.hasFamilyHistory = hasFamilyHistory; + } + + public String getYqWeight() { + return yqWeight; + } + + public void setYqWeight(String yqWeight) { + this.yqWeight = yqWeight; + } + + public String getBeforeHeight() { + return beforeHeight; + } + + public void setBeforeHeight(String beforeHeight) { + this.beforeHeight = beforeHeight; + } +}