From b0b6c173cf3160a88a98aa23cdd82442f5a0b953 Mon Sep 17 00:00:00 2001 From: liquanyu Date: Fri, 29 Jul 2016 18:04:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=84=BF=E7=AB=A5=E5=BB=BA=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lyms/platform/biz/BasicConfigServiceTest.java | 16 +-- .../com/lyms/platform/biz/dal/IPatientDao.java | 4 + .../lyms/platform/biz/dal/impl/PatientDaoImpl.java | 21 ++++ .../lyms/platform/biz/service/PatientsService.java | 8 ++ .../com/lyms/platform/query/PersonModelQuery.java | 14 +++ .../operate/web/facade/BabyBookbuildingFacade.java | 122 ++++++++++++++------- 6 files changed, 138 insertions(+), 47 deletions(-) diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java index 00706a6..b07a421 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java @@ -136,13 +136,13 @@ public class BasicConfigServiceTest { service.addVisit(visitModel) ; } public static void addBaby(ApplicationContext applicationContext){ - BabyModel babyModel = new BabyModel(); - babyModel.setBirth(new Date()); - babyModel.setName("小孩的名字"); - babyModel.setSex(1); - babyModel.setVisitstatus(1); - babyModel.setParentId("56ebbff424fdd5ddf5dd2070"); - BabyService babyService = applicationContext.getBean(BabyService.class); - babyService.addOneBaby(babyModel); +// BabyModel babyModel = new BabyModel(); +// babyModel.setBirth(new Date()); +// babyModel.setName("小孩的名字"); +// babyModel.setSex(1); +// babyModel.setVisitstatus(1); +// babyModel.setParentId("56ebbff424fdd5ddf5dd2070"); +// BabyService babyService = applicationContext.getBean(BabyService.class); +// babyService.addOneBaby(babyModel); ; } } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IPatientDao.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IPatientDao.java index f60b5e9..5efc532 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IPatientDao.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IPatientDao.java @@ -24,4 +24,8 @@ public interface IPatientDao { public List queryPatient(MongoQuery query); public Page findPage(MongoQuery query); + + Patients findLastBuildRecord(String pid, int yn); + + void updatePatientByPid(Patients patientUpdate, String pid); } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientDaoImpl.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientDaoImpl.java index 93ff79c..3b506ad 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientDaoImpl.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientDaoImpl.java @@ -6,8 +6,14 @@ import com.lyms.platform.common.dao.operator.MongoCondition; import com.lyms.platform.common.dao.operator.MongoOper; import com.lyms.platform.common.dao.operator.MongoQuery; import com.lyms.platform.common.dao.operator.Page; +import com.lyms.platform.pojo.AntenatalExaminationModel; import com.lyms.platform.pojo.Patients; import org.bson.types.ObjectId; +import org.springframework.data.mongodb.core.aggregation.Aggregation; +import org.springframework.data.mongodb.core.aggregation.AggregationOperation; +import org.springframework.data.mongodb.core.aggregation.AggregationResults; +import org.springframework.data.mongodb.core.aggregation.Field; +import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.stereotype.Repository; import java.util.List; @@ -57,4 +63,19 @@ public class PatientDaoImpl extends BaseMongoDAOImpl implements IPatie public Page findPage(MongoQuery query) { return findPage(query.convertToMongoQuery()); } + + @Override + public Patients findLastBuildRecord(String pid, int yn) { + AggregationOperation match = Aggregation.match(Criteria.where("pid").is(pid).and("yn").is(yn)); + AggregationOperation group = Aggregation.group("_id","pid","dueDate").max("created").as("created"); + AggregationOperation fields = Aggregation.project("_id", "pid", "dueDate"); + Aggregation aggregation = Aggregation.newAggregation(match, group,fields); + AggregationResults result = this.mongoTemplate.aggregate(aggregation, "lyms_patient", Patients.class); + return result.getMappedResults().size() > 0 ? result.getMappedResults().get(0) : null; + } + + @Override + public void updatePatientByPid(Patients obj, String pid) { + update(new MongoQuery(new MongoCondition("pid", pid, MongoOper.IS)).convertToMongoQuery(), obj); + } } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientsService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientsService.java index 4062eaf..2b2024f 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientsService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientsService.java @@ -172,6 +172,14 @@ public class PatientsService { return sieveModel; } + public Patients findLastBuildRecord(String pid, int yn) { + return iPatientDao.findLastBuildRecord(pid,yn); + } + + public void updatePatientByPid(Patients patientUpdate, String pid) { + iPatientDao.updatePatientByPid(patientUpdate,pid); + } + private class PatientWorker extends Thread { private List patientses; private long startTime; diff --git a/platform-dal/src/main/java/com/lyms/platform/query/PersonModelQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/PersonModelQuery.java index 1bda8c1..4ec990b 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/PersonModelQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/PersonModelQuery.java @@ -33,6 +33,7 @@ public class PersonModelQuery extends BaseQuery implements IConvertToNativeQuery //类型 1 孕妇 2 儿童 3孕妇 private Integer type; + private Integer[] types; private Date created; @@ -61,10 +62,23 @@ public class PersonModelQuery extends BaseQuery implements IConvertToNativeQuery if (type != null) { condition = condition.and("type", type, MongoOper.IS); } + if (types != null && types.length == 2) { + Criteria c = Criteria.where("type").in(types[0],types[1]); + return new MongoCondition(condition.getCriteria().andOperator(c)).toMongoQuery(); + } return condition.toMongoQuery(); } + + public Integer[] getTypes() { + return types; + } + + public void setTypes(Integer[] types) { + this.types = types; + } + public String getId() { return id; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java index 9ebedfc..c7b8fd0 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java @@ -164,6 +164,9 @@ public class BabyBookbuildingFacade { */ public BaseObjectResponse addBabyBookbuilding(BabyBookbuildingAddRequest request) { + +// Patients ppatients = patientsService.findLastBuildRecord("579b15d1231a17fcf5579bec",YnEnums.YES.getId()); +// return null; //判断儿童是否建档在该医院 if (StringUtils.isNotEmpty(request.getMommyPhone()) || StringUtils.isNotEmpty(request.getMommyCertificateNum())) { @@ -187,49 +190,20 @@ public class BabyBookbuildingFacade { } } - - //通过查询是否有该孕妇 - PatientsQuery puerperaQuery = new PatientsQuery(); - puerperaQuery.setCardNo(request.getMommyCertificateNum()); - puerperaQuery.setYn(YnEnums.YES.getId()); - Patients patients = patientsService.findOnePatientByCardNo(puerperaQuery); - - if (patients != null) { - if (patients.getType() == 1) { - - //判断在儿童建档的时候,是否设置到这个儿童对应的孕妇 设置成产妇 - //计算规则 儿童生日 > 孕妇分娩时间 - 60 设置成分娩 - Date dueDate = patients.getDueDate(); - if (dueDate != null && request.getBabyBirthday() != null) { - Date brith = DateUtil.parseYMD(request.getBabyBirthday()); - Date tempDate = DateUtil.addDay(dueDate, -60); - if (brith.getTime() > tempDate.getTime()) { - //设置孕妇已分娩 - Patients patientUpdate = new Patients(); - patientUpdate.setId(patients.getId()); - patientUpdate.setYn(YnEnums.YES.getId()); - patientUpdate.setType(3); - patientsService.updatePatient(patientUpdate); - } - } - - } - - } else { - //添加产妇建档 - Patients patient = getPatientsData(request); - patient.setCreated(new Date()); - patients = yunBookbuildingService.addPregnantBookbuilding(patient); - } - - + Patients patients = null; PersonModel resperson = null; if (request.getMommyPhone() != null || request.getMommyCertificateNum() != null) { + //查询儿童基本信息 PersonModelQuery personModelQuery = new PersonModelQuery(); personModelQuery.setPhone(request.getMommyPhone()); personModelQuery.setYn(YnEnums.YES.getId()); + personModelQuery.setName(request.getBabyName()); + personModelQuery.setType(2); + personModelQuery.setCardNo(request.getMommyCertificateNum()); List personModels = personService.queryPersons(personModelQuery); + + //更新儿童基本信息的内容 PersonModel pmodel = new PersonModel(); pmodel.setName(request.getBabyName()); pmodel.setBirth(DateUtil.parseYMD(request.getBabyBirthday())); @@ -240,7 +214,6 @@ public class BabyBookbuildingFacade { pmodel.setModified(new Date()); if (CollectionUtils.isNotEmpty(personModels) && personModels.get(0) != null) { - resperson = personModels.get(0); personService.updatePerson(pmodel,personModels.get(0).getId()); } @@ -253,6 +226,74 @@ public class BabyBookbuildingFacade { } + //查询孕妇或者产妇建档的基本信息 + PersonModelQuery personYunModelQuery = new PersonModelQuery(); + personYunModelQuery.setPhone(request.getMommyPhone()); + personYunModelQuery.setYn(YnEnums.YES.getId()); + personYunModelQuery.setTypes(new Integer[]{1, 3}); + personYunModelQuery.setCardNo(request.getMommyCertificateNum()); + List personYunModels = personService.queryPersons(personYunModelQuery); + if (CollectionUtils.isNotEmpty(personYunModels)) + { + PersonModel pm = personYunModels.get(0); + if (pm != null) + { + //查询最后一次建档记录 + patients = patientsService.findLastBuildRecord(pm.getId(),YnEnums.YES.getId()); + //当前状态为 孕妇状态 + if (pm.getType() != null && pm.getType() == 1) + { + + if (patients != null) { + if (patients.getType() == 1) { + + //判断在儿童建档的时候,是否设置到这个儿童对应的孕妇 设置成产妇 + //计算规则 儿童生日 > 孕妇分娩时间 - 60 设置成分娩 + Date dueDate = patients.getDueDate(); + if (dueDate != null && request.getBabyBirthday() != null) { + Date brith = DateUtil.parseYMD(request.getBabyBirthday()); + Date tempDate = DateUtil.addDay(dueDate, -60); + if (brith.getTime() > tempDate.getTime()) { + //设置孕妇已分娩 + Patients patientUpdate = new Patients(); + patientUpdate.setYn(YnEnums.YES.getId()); + patientUpdate.setType(3); + patientsService.updatePatientByPid(patientUpdate,pm.getId()); + + + pm.setType(3);//基本信息更新成产妇 + resperson = pm; + personService.updatePerson(pm,pm.getId()); + } + } + } + } + } + } + } + //没有孕妇基本信息就新建产妇建档 和基本信息 + else + { + //添加产妇基本信息 + PersonModel pmodel = new PersonModel(); + pmodel.setName(request.getMommyName()); + pmodel.setBirth(DateUtil.parseYMD(request.getMommyBirthday())); + pmodel.setPhone(request.getMommyPhone()); + pmodel.setCardNo(request.getMommyCertificateNum()); + pmodel.setType(3); + pmodel.setYn(YnEnums.YES.getId()); + pmodel.setModified(new Date()); + pmodel.setCreated(new Date()); + + PersonModel yunModel = personService.addPerson(pmodel); + + //添加产妇建档 + Patients patient = getPatientsData(request); + patient.setPid(yunModel.getId()); + patient.setCreated(new Date()); + patients = yunBookbuildingService.addPregnantBookbuilding(patient); + } + BabyModel model = getBabyModel(request); model.setPid(resperson.getId()); @@ -261,7 +302,6 @@ public class BabyBookbuildingFacade { String cardId = request.getMommyCertificateNum() + DateUtil.getYmd(DateUtil.parseYMD(request.getBabyBirthday())); - //count = babyBookbuildingService.queryBabyCount(babyQuery); model.setCardId(cardId + request.getBabyName()); } if (StringUtils.isNotEmpty(request.getMommyPhone())) @@ -271,7 +311,10 @@ public class BabyBookbuildingFacade { model.setPhoneId(phoneId + request.getBabyName()); } - model.setParentId(patients.getId()); + if (patients.getId() != null) + { + model.setParentId(patients.getId()); + } model.setCreated(new Date()); model.setModified(new Date()); model = babyBookbuildingService.addBabyBookbuilding(model); @@ -289,6 +332,7 @@ public class BabyBookbuildingFacade { br.setData(model.getId()); return br; + } -- 1.8.3.1