Commit d96b01c61683218d5aa090e04dc42106e6cc194b

Authored by yangfei
1 parent 2721ed24e1

高危自动处理

Showing 6 changed files with 161 additions and 47 deletions

platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientsService.java View file @ d96b01c
... ... @@ -14,9 +14,7 @@
14 14 import org.slf4j.Logger;
15 15 import org.slf4j.LoggerFactory;
16 16 import org.springframework.beans.factory.annotation.Autowired;
17   -import org.springframework.beans.factory.annotation.Qualifier;
18 17 import org.springframework.data.domain.Sort;
19   -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
20 18 import org.springframework.stereotype.Service;
21 19  
22 20 import java.util.Arrays;
23 21  
... ... @@ -44,8 +42,9 @@
44 42 private PersonService personService;
45 43 @Autowired
46 44 private IAntExRecordDao iAntExRecordDao;
47   -
48 45 @Autowired
  46 + private TrackDownService trackDownService;
  47 + @Autowired
49 48 private TrackDownRecordService trackDownRecordService;
50 49  
51 50  
52 51  
... ... @@ -290,11 +289,41 @@
290 289 }
291 290 }).start();
292 291  
  292 + //处理产后复查、产后追访数据显示及自动流转
  293 + new Thread(new Runnable() {
  294 + @Override
  295 + public void run() {
  296 + patientAutoFm();
  297 + }
  298 + }).start();
  299 +
  300 + //自动流转产后复查转出或产后访视转出
  301 + new Thread(new Runnable() {
  302 + @Override
  303 + public void run() {
  304 + trackAutoFlow();
  305 + }
  306 + }).start();
  307 +
  308 + //自动流转产后复查转出或产后访视转出
  309 + new Thread(new Runnable() {
  310 + @Override
  311 + public void run() {
  312 + dandleReachDue();
  313 + }
  314 + }).start();
  315 + }
  316 +
  317 + /**
  318 + * 自开始处理产后复查、产后访视追访数据:
  319 + */
  320 + public void trackAutoFlow() {
293 321 //添加产后追访信息
294 322 TrackDownRecordQuery downRecordQuery = new TrackDownRecordQuery();
295 323 downRecordQuery.setTrackTypes(Arrays.asList(TrackDownDateEnums.F.getId(), TrackDownDateEnums.G.getId(),
296 324 TrackDownDateEnums.K.getId()));
297 325 List<TrackDownRecord> records = trackDownRecordService.queryTrackDown(downRecordQuery);
  326 + System.out.println("开始处理产后复查、产后访视追访数据:"+records.size());
298 327 for (TrackDownRecord tr : records) {
299 328 Patients patients = iPatientDao.getPatient(tr.getParentId());
300 329 if (patients != null && patients.getFmDate() != null) {//分娩时间不为空
301 330  
302 331  
303 332  
304 333  
305 334  
306 335  
307 336  
308 337  
309 338  
... ... @@ -307,33 +336,68 @@
307 336 } else {//否则进入产后复查追访
308 337 tr.setTrackType(TrackDownDateEnums.J.getId());
309 338 }
310   - trackDownRecordService.updateTrackDown(tr, tr.getId());
311 339 }
  340 + }else{//不显示
  341 + tr.setStatus(0);
312 342 }
  343 + }else if (patients == null){
  344 + tr.setStatus(0);
313 345 }
  346 + trackDownRecordService.updateTrackDown(tr, tr.getId());
314 347 }
315 348 }
316 349  
  350 +
317 351 /**
  352 + * 开始处理产检、产筛追访数据进入分娩追访
  353 + */
  354 + public void patientAutoFm() {
  355 + //添加产后追访信息
  356 + TrackDownRecordQuery downRecordQuery = new TrackDownRecordQuery();
  357 + downRecordQuery.setTrackTypes(Arrays.asList(TrackDownDateEnums.C.getId(), TrackDownDateEnums.D.getId(), TrackDownDateEnums.H.getId(), TrackDownDateEnums.I.getId()));
  358 + List<TrackDownRecord> records = trackDownRecordService.queryTrackDown(downRecordQuery);
  359 + System.out.println("开始处理产检、产筛追访数据进入分娩追访:"+records.size());
  360 + for (TrackDownRecord tr : records) {
  361 + Patients patients = iPatientDao.getPatient(tr.getParentId());
  362 + if (patients != null && patients.getType() == 3) {//产妇
  363 + System.out.println("产检追访已经分娩:"+patients.getId());
  364 + //分娩距当前时间天数
  365 + int day = DateUtil.daysBetween(patients.getFmDate(), new Date());
  366 + if (day <= 60) {//产后60天内,可做产后访视或产后复查环节
  367 + if (day > 42) {//不需要做产后访视追访记录,只做产后复查追访
  368 + tr.setTrackType(TrackDownDateEnums.G.getId());
  369 + } else {
  370 + tr.setTrackType(TrackDownDateEnums.F.getId());
  371 + }
  372 + }else{//否则不显示
  373 + tr.setStatus(0);
  374 + }
  375 + trackDownRecordService.updateTrackDown(tr, tr.getId());
  376 + }
  377 + }
  378 + }
  379 +
  380 +
  381 + /**
318 382 * 处理产筛追访数据,孕周大于20周自动进入产检追访
319 383 */
320 384 public void handSieveTrack() {
321 385 //添加产后追访信息
322 386 TrackDownRecordQuery downRecordQuery = new TrackDownRecordQuery();
323   - downRecordQuery.setTrackTypes(Arrays.asList(TrackDownDateEnums.C.getId(),TrackDownDateEnums.H.getId()));
  387 + downRecordQuery.setTrackTypes(Arrays.asList(TrackDownDateEnums.C.getId(), TrackDownDateEnums.H.getId()));
324 388  
325 389 List<TrackDownRecord> records = trackDownRecordService.queryTrackDown(downRecordQuery);
326 390 for (TrackDownRecord tr : records) {
327 391 Patients patients = iPatientDao.getPatient(tr.getParentId());
328   - if(patients == null||tr==null){
329   - System.out.println("处理产筛追访数据,孕周大于20周自动进入产检追访:patient为空"+tr.getParentId());
  392 + if (patients == null || tr == null) {
  393 + System.out.println("处理产筛追访数据,孕周大于20周自动进入产检追访:patient为空" + tr.getParentId());
330 394 continue;
331 395 }
332 396 int week = DateUtil.getWeek2(patients.getLastMenses(), new Date());
333 397 if (week > 20) {//不能做产前筛查追访,显示产前检查追访
334   - if (tr.getTrackType()== TrackDownDateEnums.C.getId()) {
  398 + if (tr.getTrackType() == TrackDownDateEnums.C.getId()) {
335 399 tr.setTrackType(TrackDownDateEnums.I.getId());
336   - }else if(tr.getTrackType()== TrackDownDateEnums.H.getId()){
  400 + } else if (tr.getTrackType() == TrackDownDateEnums.H.getId()) {
337 401 tr.setTrackType(TrackDownDateEnums.E.getId());
338 402 }
339 403 }
... ... @@ -386,6 +450,8 @@
386 450 patients.setIsAutoFm(YnEnums.YES.getId());
387 451 // hujiaqi添加结束
388 452 updatePatient(patients);
  453 + //追访流转到产后访视
  454 + addTrackDownInfo(patients.getOperator(), patients);
389 455  
390 456 /** 自动分娩 >> 作废未使用的产检券 */
391 457 // remoteService.invalidCoupon(patients.getPid(), "2", RemoteUrlEnum.INVALID_COUPON_URL);
... ... @@ -405,6 +471,47 @@
405 471 }
406 472  
407 473 /**
  474 + * 分娩添加或更新追访信息
  475 + *
  476 + * @param userId
  477 + */
  478 + public void addTrackDownInfo(Integer userId, Patients patients) {
  479 + //添加产后追访信息
  480 + int day = DateUtil.daysBetween(patients.getFmDate(), new Date());
  481 + if (day <= 60) {//产后60天内,可做产后访视或产后复查环节
  482 + if (null != patients) {
  483 + TrackDownRecord trackDownRecord = patients.build();
  484 + trackDownRecord.setTrackType(TrackDownDateEnums.F.getId());
  485 + if (patients.getDueStatus() == 1) {//终止妊娠
  486 + //当前孕妇是孕28周后,进入产后复查追访,否则结束流程
  487 + int dueWeek = DateUtil.getWeek2(patients.getLastMenses(), patients.getFmDate());
  488 +
  489 + if (dueWeek >= 28) {//进入产后复查
  490 + trackDownRecord.setTrackType(TrackDownDateEnums.J.getId());
  491 + } else {//结束流程
  492 + trackDownRecord.setStatus(0);
  493 + }
  494 + }
  495 + //查询是否存在追访记录,如果有则修改,没有则新增
  496 + TrackDownRecordQuery downRecordQuery = new TrackDownRecordQuery();
  497 + downRecordQuery.setParentId(patients.getId());
  498 + downRecordQuery.setStatus(3);
  499 + List<TrackDownRecord> records = trackDownRecordService.queryTrackDown(downRecordQuery);
  500 + logger.info("CHTrackDownDataLoader addTrackDown by id :" + patients.getId());
  501 + if (CollectionUtils.isNotEmpty(records)) {
  502 + TrackDownRecord track = records.get(0);
  503 + trackDownRecord.setId(track.getId());
  504 + }
  505 + if (day > 42) {//不需要做产后访视追访记录,只做产后复查追访
  506 + trackDownRecord.setTrackType(TrackDownDateEnums.J.getId());
  507 + }
  508 + trackDownRecordService.addOrupdateTrackDownRecord(patients.getOperator(), trackDownRecord);
  509 + }
  510 + }
  511 + }
  512 +
  513 +
  514 + /**
408 515 * 孕妇建档时调用的方法或者修改末次月经后调用
409 516 *
410 517 * @param patients
... ... @@ -414,7 +521,7 @@
414 521 new Thread(new Runnable() {
415 522 @Override
416 523 public void run() {
417   - if(patients!=null){
  524 + if (patients != null) {
418 525 //修改产筛s
419 526 updateSieve(patients);
420 527 //修改转诊
... ... @@ -424,7 +531,6 @@
424 531 }
425 532 }
426 533 }).start();
427   -
428 534  
429 535  
430 536 }
platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/TrackDownRecordService.java View file @ d96b01c
... ... @@ -37,6 +37,36 @@
37 37 @Autowired
38 38 private ITrackDownRecordDao iTrackDownRecordDao;
39 39  
  40 +
  41 + //新增或更新追访状态
  42 + public boolean addOrupdateTrackDownRecord(Integer userId, TrackDownRecord trackDownRecord) {
  43 + try {
  44 + //先根据主键id进行查询
  45 + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(trackDownRecord.getId())) {
  46 + TrackDownRecord trackDownRecord1 = getTrackDown(trackDownRecord.getId());
  47 + if (trackDownRecord1 != null) {
  48 + //流程只能往下流转,不能往上回退,,因为9,10,11,12,是后面加入的产筛转出流程所以不做判断
  49 + if (trackDownRecord.getTrackType() != null && trackDownRecord.getTrackType()!=8 && trackDownRecord.getTrackType()!=9 && trackDownRecord.getTrackType()!=10&&trackDownRecord.getTrackType()!=11 && trackDownRecord.getTrackType() < trackDownRecord1.getTrackType().intValue()) {
  50 + //用以前追访的类型和来源id
  51 + trackDownRecord.setTrackType(trackDownRecord1.getTrackType());
  52 + trackDownRecord.setSource(trackDownRecord1.getSource());
  53 + }
  54 + //由显示修改成不显示,后期数据更新时,不允许将不显示修改成显示。
  55 + if (trackDownRecord1.getStatus() < trackDownRecord.getStatus()) {
  56 + trackDownRecord.setStatus(trackDownRecord1.getStatus());
  57 + }
  58 + updateTrackDown(trackDownRecord, trackDownRecord1.getId());
  59 + return true;
  60 + }
  61 + }
  62 + addTrackDown(trackDownRecord);
  63 + return true;
  64 + } catch (Exception e) {
  65 + e.printStackTrace();
  66 + return false;
  67 + }
  68 + }
  69 +
40 70 public TrackDownRecord addTrackDown(TrackDownRecord downRecord) {
41 71 downRecord.setCreated(new Date());
42 72 downRecord.setModified(new Date());
platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/ConvertHelper.java View file @ d96b01c
... ... @@ -767,11 +767,11 @@
767 767  
768 768 List<Map> otherHighRisks = new ArrayList<>();
769 769 List list3 = null;
770   - String ot=antExChuModel.getOtherHighRisk();
771   - if (org.apache.commons.lang.StringUtils.isNotEmpty(ot)&&ot.startsWith("[") && antExChuModel.getOtherHighRisk().endsWith("]")) {
  770 + String ot = antExChuModel.getOtherHighRisk();
  771 + if (org.apache.commons.lang.StringUtils.isNotEmpty(ot) && ot.startsWith("[") && antExChuModel.getOtherHighRisk().endsWith("]")) {
772 772 list3 = JsonUtil.toList(ot, Map.class);
773 773 otherHighRisks.addAll(list3);
774   - } else if(org.apache.commons.lang.StringUtils.isNotEmpty(ot)){
  774 + } else if (org.apache.commons.lang.StringUtils.isNotEmpty(ot)) {
775 775 Map otherMap = JsonUtil.jkstr2Obj(ot, Map.class);
776 776 otherHighRisks.add(otherMap);
777 777 }
778 778  
... ... @@ -978,11 +978,11 @@
978 978 }
979 979 List<Map> otherHighRisks = new ArrayList<>();
980 980 List list3 = null;
981   - String ot =antExChuModel.getOtherRisk();
982   - if (org.apache.commons.lang.StringUtils.isNotEmpty(ot)&ot.startsWith("[") && ot.endsWith("]")) {
  981 + String ot = antExChuModel.getOtherRisk();
  982 + if (org.apache.commons.lang.StringUtils.isNotEmpty(ot) & ot.startsWith("[") && ot.endsWith("]")) {
983 983 list3 = JsonUtil.toList(ot, Map.class);
984 984 otherHighRisks.addAll(list3);
985   - } else if(org.apache.commons.lang.StringUtils.isNotEmpty(ot)){
  985 + } else if (org.apache.commons.lang.StringUtils.isNotEmpty(ot)) {
986 986 Map otherMap = JsonUtil.jkstr2Obj(ot, Map.class);
987 987 otherHighRisks.add(otherMap);
988 988 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RiskReportFacade.java View file @ d96b01c
... ... @@ -137,7 +137,6 @@
137 137  
138 138 patientsQuery.setNorFactor(Boolean.TRUE);
139 139  
140   -
141 140 PatientsQuery query = new PatientsQuery();
142 141 query.setYn(YnEnums.YES.getId());
143 142 query.setBuildTypeList(patientsQuery.getBuildTypeList());
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java View file @ d96b01c
... ... @@ -163,11 +163,14 @@
163 163  
164 164 if (downQueryRequest.getIsHightRisk() != null) {//是否高危:是:排除健康,否:等于健康
165 165 if (downQueryRequest.getIsHightRisk() == 1) {//是
166   - patientsQuery.setNotoRiskFactor("d42eec03-aa86-45b8-a4e0-78a0ff365fb6");
  166 + // patientsQuery.setNotoRiskFactor("d42eec03-aa86-45b8-a4e0-78a0ff365fb6");
167 167 patientsQuery.setIsHighRisk(Boolean.TRUE);
168 168 isPatient = true;
169 169 } else if (downQueryRequest.getIsHightRisk() == 2) {//否
170   - patientsQuery.setrFactor("d42eec03-aa86-45b8-a4e0-78a0ff365fb6");
  170 + patientsQuery.sethScoreStart(0);
  171 + patientsQuery.sethScoreEnd(0);
  172 + // patientsQuery.setrLevel("e637b361-99cf-41eb-84f2-f0dab596e928");
  173 + // patientsQuery.setrFactor("d42eec03-aa86-45b8-a4e0-78a0ff365fb6");
171 174 isPatient = true;
172 175 }
173 176 }
174 177  
... ... @@ -202,7 +205,9 @@
202 205 TrackDownRecordQuery downRecordQuery = new TrackDownRecordQuery();
203 206 if (isPatient) {//加入了高危因数查询条件
204 207 patientsQuery.setHospitalId(hospitalId);
  208 + patientsQuery.setType(1);
205 209 patientsQuery.setQueryNo(downQueryRequest.getKey());
  210 + // System.out.println("过滤条件:"+patientsQuery.convertToQuery().convertToMongoQuery());
206 211 List<Patients> patientses = patientsService.queryPatient(patientsQuery);
207 212 List<String> pids = new ArrayList<>();
208 213 for (Patients ps : patientses) {
platform-operate-api/src/main/resources/spring/applicationContext-quartz.xml View file @ d96b01c
... ... @@ -61,16 +61,6 @@
61 61 <property name="concurrent" value="false"></property>
62 62 </bean>
63 63  
64   - <!--预产期两周前自动创建分娩住院追访任务 -->
65   - <bean id="dandleReachDue" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
66   - <!-- 要调用的bean -->
67   - <property name="targetObject" ref="patientsServiceLocal"></property>
68   - <!-- 要调用的Method -->
69   - <property name="targetMethod" value="dandleReachDue"></property>
70   - <!-- 是否并发,false表示 如果发生错误也不影响下一次的调用 -->
71   - <property name="concurrent" value="false"></property>
72   - </bean>
73   -
74 64 <!--处理产后复查、产后追访数据显示及自动流转追访任务 -->
75 65 <bean id="dandleAutoReachDue" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
76 66 <!-- 要调用的bean -->
... ... @@ -162,11 +152,6 @@
162 152 </bean>
163 153  
164 154 <!-- 配置一个触发器 -->
165   - <bean id="dandleReachDueTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
166   - <property name="jobDetail" ref="dandleReachDue"></property>
167   - <property name="cronExpression" value="0 0 2 * * ?"></property>
168   - </bean>
169   - <!-- 配置一个触发器 -->
170 155 <bean id="dandleAutoReachDueTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
171 156 <property name="jobDetail" ref="dandleAutoReachDue"></property>
172 157 <property name="cronExpression" value="0 30 2 * * ?"></property>
... ... @@ -219,13 +204,6 @@
219 204 <property name="repeatCount" value="0" />
220 205 </bean>
221 206  
222   - <!-- 分娩前20周分娩住院追访配置项目启动后任务就执行一次 -->
223   - <bean id="firstDandleReachDueTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
224   - <property name="jobDetail" ref="dandleReachDue" />
225   - <property name="startDelay" value="500" />
226   - <property name="repeatInterval" value="0" />
227   - <property name="repeatCount" value="0" />
228   - </bean>
229 207  
230 208 <!-- 分娩前20周分娩住院追访配置项目启动后任务就执行一次 -->
231 209 <bean id="firstDandleAutoReachDueTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
... ... @@ -281,11 +259,7 @@
281 259 <ref bean="autoInsertIdTrigger"/>
282 260 <ref bean="courseTrigger"/>
283 261 <ref bean="measureDataTrigger" />
284   - <!--预产期前两周自动创建分娩住院追访-->
285   - <ref bean="dandleReachDueTrigger"/>
286   - <!--预产期前两周自动创建分娩住院追访启动时执行一次-->
287   - <ref bean="firstDandleReachDueTrigger" />
288   - <!--处理产后复查、产后追访数据显示及自动流转-->
  262 + <!--处理追访数据-->
289 263 <ref bean="dandleAutoReachDueTrigger"/>
290 264 <!--处理产后复查、产后追访数据显示及自动流转-->
291 265 <ref bean="firstDandleAutoReachDueTrigger" />