Browse Source

医嘱同步到dispatchInfo

malz 1 year ago
parent
commit
4fbe2de7d3

+ 74 - 0
src/main/java/com/hgwebservice/dal/dataobject/data/DispatchInfoDO.java

@@ -0,0 +1,74 @@
+package com.hgwebservice.dal.dataobject.data;
+
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.util.Date;
+
+/**
+ * 待执行医嘱 DO
+ *
+ * @author super_admin
+ */
+@TableName("dispatch_info")
+@KeySequence("dispatch_info_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class DispatchInfoDO {
+
+    /**
+     * 主键自增
+     */
+    @TableId
+    private Integer id;
+    /**
+     * 医嘱编号
+     */
+    private String code;
+    /**
+     * 医嘱类型
+     */
+    private String type;
+    /**
+     * 医嘱详细内容
+     */
+    private String message;
+    /**
+     * 频率
+     */
+    private String frequency;
+    /**
+     * 所属科室
+     */
+    private String departCode;
+    /**
+     * 病人唯一码 
+     */
+    private String patientCode;
+    /**
+     * 住院号
+     */
+    private String admCode;
+    /**
+     *  血糖或胰岛素医嘱(1,	血糖医嘱; 2, 胰岛素	医嘱)
+     */
+    private String dispatchType;
+
+    private Date createTime;
+
+    private Date updateTime;
+    /**
+     * 医院code
+     */
+    private String hospitalCode;
+    /**
+     * 医院id
+     */
+    private Integer hospitalId;
+
+}

+ 17 - 0
src/main/java/com/hgwebservice/dal/mysql/data/DispatchInfoMapper.java

@@ -0,0 +1,17 @@
+package com.hgwebservice.dal.mysql.data;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.hgwebservice.dal.dataobject.data.DispatchDataDO;
+import com.hgwebservice.dal.dataobject.data.DispatchInfoDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 待执行医嘱 Mapper
+ *
+ * @author super_admin
+ */
+@Mapper
+public interface DispatchInfoMapper extends BaseMapper<DispatchInfoDO> {
+
+}

+ 3 - 1
src/main/java/com/hgwebservice/dal/mysql/data/OperatorDataMapper.java

@@ -3,6 +3,7 @@ package com.hgwebservice.dal.mysql.data;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.hgwebservice.dal.dataobject.data.DispatchDataDO;
 import com.hgwebservice.dal.dataobject.data.DispatchDataDO;
+import com.hgwebservice.dal.dataobject.data.DispatchInfoDO;
 import com.hgwebservice.dal.dataobject.data.OperatorDataDO;
 import com.hgwebservice.dal.dataobject.data.OperatorDataDO;
 import com.hgwebservice.dal.dataobject.data.PatientDataDO;
 import com.hgwebservice.dal.dataobject.data.PatientDataDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
@@ -20,5 +21,6 @@ public interface OperatorDataMapper extends BaseMapper<OperatorDataDO> {
 
 
     int replaceOperatorData(@Param("list") List<OperatorDataDO> list,@Param("hospitalId")Integer hospitalId);
     int replaceOperatorData(@Param("list") List<OperatorDataDO> list,@Param("hospitalId")Integer hospitalId);
     int replacePatientData(@Param("list") List<PatientDataDO> list,@Param("hospitalId")Integer hospitalId);
     int replacePatientData(@Param("list") List<PatientDataDO> list,@Param("hospitalId")Integer hospitalId);
-    int replaceDispatchData(@Param("list") List<DispatchDataDO> list,@Param("hospitalId")Integer hospitalId);
+    int insertDispatchData(@Param("list") List<DispatchDataDO> list,@Param("hospitalId")Integer hospitalId);
+    int insertDispatchInfo(@Param("list") List<DispatchInfoDO> list, @Param("hospitalId")Integer hospitalId);
 }
 }

+ 33 - 3
src/main/java/com/hgwebservice/service/syncCdm2/SyncDispatchDataByDeptCodeImpl.java

@@ -8,6 +8,7 @@ import com.hgwebservice.dal.dataobject.data.OperatorDataDO;
 import com.hgwebservice.dal.dataobject.data.PatientDataDO;
 import com.hgwebservice.dal.dataobject.data.PatientDataDO;
 import com.hgwebservice.dal.mysql.data.DispatchDataMapper;
 import com.hgwebservice.dal.mysql.data.DispatchDataMapper;
 import com.hgwebservice.dal.mysql.data.OperatorDataMapper;
 import com.hgwebservice.dal.mysql.data.OperatorDataMapper;
+import com.hgwebservice.dal.mysql.data.PatientDataMapper;
 import com.hgwebservice.entity.hisview.DispatchData;
 import com.hgwebservice.entity.hisview.DispatchData;
 import com.hgwebservice.entity.hisview.OperatorData;
 import com.hgwebservice.entity.hisview.OperatorData;
 import com.hgwebservice.entity.hisview.PatientData;
 import com.hgwebservice.entity.hisview.PatientData;
@@ -29,6 +30,10 @@ public class SyncDispatchDataByDeptCodeImpl implements SyncDispatchDataByDeptCod
     @Autowired
     @Autowired
     DispatchDataMapper dispatchDataMapper;
     DispatchDataMapper dispatchDataMapper;
     @Autowired
     @Autowired
+    PatientDataMapper patientDataMapper;
+    @Autowired
+    SyncDispatchInfoByDeptCode syncDispatchInfoByDeptCode;
+    @Autowired
     HgWebService hgWebService;
     HgWebService hgWebService;
     @Value("${hospital_id}")
     @Value("${hospital_id}")
     private Integer hospitalId;
     private Integer hospitalId;
@@ -38,26 +43,51 @@ public class SyncDispatchDataByDeptCodeImpl implements SyncDispatchDataByDeptCod
         LambdaQueryWrapper<DispatchDataDO> dispatchDataDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<DispatchDataDO> dispatchDataDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
         dispatchDataDOLambdaQueryWrapper.eq(DispatchDataDO::getHospitalId,hospitalId);
         dispatchDataDOLambdaQueryWrapper.eq(DispatchDataDO::getHospitalId,hospitalId);
         List<DispatchDataDO> dispatchDataDOS1 = dispatchDataMapper.selectList(dispatchDataDOLambdaQueryWrapper);
         List<DispatchDataDO> dispatchDataDOS1 = dispatchDataMapper.selectList(dispatchDataDOLambdaQueryWrapper);
+        LambdaQueryWrapper<PatientDataDO> patientDataDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        patientDataDOLambdaQueryWrapper.eq(PatientDataDO::getHospitalId,hospitalId);
+        List<PatientDataDO> patientDataDOS = patientDataMapper.selectList(patientDataDOLambdaQueryWrapper);
         if (CollUtil.isNotEmpty(operatorDataDOS)) {
         if (CollUtil.isNotEmpty(operatorDataDOS)) {
             List<String> collect = operatorDataDOS.stream().map(OperatorDataDO::getDeptCode).distinct().collect(Collectors.toList());
             List<String> collect = operatorDataDOS.stream().map(OperatorDataDO::getDeptCode).distinct().collect(Collectors.toList());
             if (CollUtil.isNotEmpty(collect)) {
             if (CollUtil.isNotEmpty(collect)) {
                 for (String deptCode : collect) {
                 for (String deptCode : collect) {
                     List<DispatchData> dispatchData = hgWebService.getDispatchDataByDeptCode(deptCode);
                     List<DispatchData> dispatchData = hgWebService.getDispatchDataByDeptCode(deptCode);
                     if (CollUtil.isNotEmpty(dispatchData)){
                     if (CollUtil.isNotEmpty(dispatchData)){
+                        for (DispatchData dispatchDatum : dispatchData) {
+                            if (dispatchDatum.getPatientNo()!=null){
+                                Optional<PatientDataDO> first = patientDataDOS.stream().filter(item -> item.getPatientNo().equals(dispatchDatum.getPatientNo())).findFirst();
+                                if (first.isPresent()){
+                                    dispatchDatum.setHospitalNo(first.get().getHospitalNo());
+                                }
+                            }
+                        }
                         List<Integer> deletedIds=new ArrayList<>();
                         List<Integer> deletedIds=new ArrayList<>();
+                        List<String> updateIds=new ArrayList<>();
                         List<DispatchDataDO> collect1 = dispatchDataDOS1.stream().filter(item -> item.getDeptCode().equals(deptCode)).collect(Collectors.toList());
                         List<DispatchDataDO> collect1 = dispatchDataDOS1.stream().filter(item -> item.getDeptCode().equals(deptCode)).collect(Collectors.toList());
                         for (DispatchDataDO dispatchDataDO : collect1) {
                         for (DispatchDataDO dispatchDataDO : collect1) {
-                            Optional<DispatchData> first = dispatchData.stream().filter(item -> item.getPatientNo().equals(dispatchDataDO.getDispatchNo())).findFirst();
+                            Optional<DispatchData> first = dispatchData.stream().filter(item -> item.getDispatchNo().equals(dispatchDataDO.getDispatchNo())).findFirst();
                             if (!first.isPresent()){
                             if (!first.isPresent()){
                                 deletedIds.add(dispatchDataDO.getId());
                                 deletedIds.add(dispatchDataDO.getId());
+                            }else{
+                                // 如果存在则不用新增
+                                updateIds.add(dispatchDataDO.getDispatchNo());
                             }
                             }
                         }
                         }
                         if (CollUtil.isNotEmpty(deletedIds)){
                         if (CollUtil.isNotEmpty(deletedIds)){
                             dispatchDataMapper.deleteBatchIds(deletedIds);
                             dispatchDataMapper.deleteBatchIds(deletedIds);
                         }
                         }
+                        List<DispatchData> insertDispatchData;
+                        if (CollUtil.isNotEmpty(updateIds)){
+                            insertDispatchData=dispatchData.stream().filter(item->!updateIds.contains(item.getDispatchNo())).collect(Collectors.toList());
+                        }else{
+                            insertDispatchData=dispatchData;
+                        }
+                        if (CollUtil.isNotEmpty(insertDispatchData)){
+                            List<DispatchDataDO> dispatchDataDOS = BeanUtil.copyToList(insertDispatchData, DispatchDataDO.class);
+                            operatorDataMapper.insertDispatchData(dispatchDataDOS,hospitalId);
+                        }
 
 
-                        List<DispatchDataDO> dispatchDataDOS = BeanUtil.copyToList(dispatchData, DispatchDataDO.class);
-                        operatorDataMapper.replaceDispatchData(dispatchDataDOS,hospitalId);
+                        // 更新到dispatch_info表
+                        syncDispatchInfoByDeptCode.saveCdm2(dispatchData);
                     }
                     }
                 }
                 }
             }
             }

+ 9 - 0
src/main/java/com/hgwebservice/service/syncCdm2/SyncDispatchInfoByDeptCode.java

@@ -0,0 +1,9 @@
+package com.hgwebservice.service.syncCdm2;
+
+import com.hgwebservice.entity.hisview.DispatchData;
+
+import java.util.List;
+
+public interface SyncDispatchInfoByDeptCode {
+    void saveCdm2(List<DispatchData> dispatchData);
+}

+ 93 - 0
src/main/java/com/hgwebservice/service/syncCdm2/SyncDispatchInfoByDeptCodeImpl.java

@@ -0,0 +1,93 @@
+package com.hgwebservice.service.syncCdm2;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.hgwebservice.dal.dataobject.data.DispatchDataDO;
+import com.hgwebservice.dal.dataobject.data.DispatchInfoDO;
+import com.hgwebservice.dal.dataobject.data.OperatorDataDO;
+import com.hgwebservice.dal.mysql.data.DispatchDataMapper;
+import com.hgwebservice.dal.mysql.data.DispatchInfoMapper;
+import com.hgwebservice.dal.mysql.data.OperatorDataMapper;
+import com.hgwebservice.entity.hisview.DispatchData;
+import com.hgwebservice.service.HgWebService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+@Service
+public class SyncDispatchInfoByDeptCodeImpl implements SyncDispatchInfoByDeptCode {
+    @Autowired
+    OperatorDataMapper operatorDataMapper;
+    @Autowired
+    DispatchInfoMapper dispatchInfoMapper;
+    @Autowired
+    HgWebService hgWebService;
+    @Value("${hospital_id}")
+    private Integer hospitalId;
+    @Override
+    public void saveCdm2(List<DispatchData> dispatchDataParam) {
+        List<OperatorDataDO> operatorDataDOS = operatorDataMapper.selectList(new LambdaQueryWrapper<>());
+        LambdaQueryWrapper<DispatchInfoDO> dispatchInfoDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        dispatchInfoDOLambdaQueryWrapper.eq(DispatchInfoDO::getHospitalId,hospitalId);
+        List<DispatchInfoDO> dispatchInfoDOS = dispatchInfoMapper.selectList(dispatchInfoDOLambdaQueryWrapper);
+        if (CollUtil.isNotEmpty(operatorDataDOS)) {
+            List<String> collect = operatorDataDOS.stream().map(OperatorDataDO::getDeptCode).distinct().collect(Collectors.toList());
+            if (CollUtil.isNotEmpty(collect)) {
+                for (String deptCode : collect) {
+                    List<DispatchData> dispatchData1 = dispatchDataParam.stream().filter(item -> item.getDeptCode().equals(deptCode)).collect(Collectors.toList());
+                    if (CollUtil.isNotEmpty(dispatchData1)){
+                        List<DispatchInfoDO> dispatchData = dispatchData1.stream().map(item -> {
+                            DispatchInfoDO dispatchInfoDO = new DispatchInfoDO();
+                            dispatchInfoDO.setCode(item.getDispatchNo());
+                            dispatchInfoDO.setType(item.getType());
+                            dispatchInfoDO.setMessage(item.getMessage());
+                            dispatchInfoDO.setFrequency(item.getFrequency());
+                            dispatchInfoDO.setDepartCode(item.getDeptCode());
+                            dispatchInfoDO.setPatientCode(item.getPatientNo());
+                            dispatchInfoDO.setAdmCode(item.getHospitalNo());
+                            dispatchInfoDO.setDispatchType(item.getDispatchType());
+                            dispatchInfoDO.setHospitalId(hospitalId);
+                            return dispatchInfoDO;
+                        }).collect(Collectors.toList());
+                        List<Integer> deletedIds=new ArrayList<>();
+                        List<String> updateIds=new ArrayList<>();
+                        List<DispatchInfoDO> collect1 = dispatchInfoDOS.stream().filter(item -> item.getDepartCode().equals(deptCode)).collect(Collectors.toList());
+                        for (DispatchInfoDO dispatchDataDO : collect1) {
+                            Optional<DispatchInfoDO> first = dispatchData.stream().filter(item -> item.getCode().equals(dispatchDataDO.getCode())).findFirst();
+                            if (!first.isPresent()){
+                                deletedIds.add(dispatchDataDO.getId());
+                            }else{
+                                // 如果存在则不用新增
+                                updateIds.add(dispatchDataDO.getCode());
+                            }
+                        }
+                        if (CollUtil.isNotEmpty(deletedIds)){
+                            dispatchInfoMapper.deleteBatchIds(deletedIds);
+                        }
+                        List<DispatchInfoDO> insertDispatchInfo;
+                        if (CollUtil.isNotEmpty(updateIds)){
+                            insertDispatchInfo=dispatchData.stream().filter(item->!updateIds.contains(item.getCode())).collect(Collectors.toList());
+                        }else{
+                            insertDispatchInfo=dispatchData;
+                        }
+                        if (CollUtil.isNotEmpty(insertDispatchInfo)){
+                            List<DispatchInfoDO> dispatchDataDOS = BeanUtil.copyToList(insertDispatchInfo, DispatchInfoDO.class);
+                            operatorDataMapper.insertDispatchInfo(dispatchDataDOS,hospitalId);
+                        }
+                    }
+                }
+            }
+        }
+//        List<DispatchData> dispatchData = hgWebService.getDispatchDataByDeptCode("55");
+//        if (CollUtil.isNotEmpty(dispatchData)){
+//            List<DispatchDataDO> dispatchDataDOS = BeanUtil.copyToList(dispatchData, DispatchDataDO.class);
+//            operatorDataMapper.replaceDispatchData(dispatchDataDOS,hospitalId);
+//        }
+    }
+}

+ 23 - 2
src/main/resources/mapper/DataMapper.xml

@@ -51,8 +51,8 @@
             )
             )
         </foreach>
         </foreach>
     </insert>
     </insert>
-    <insert id="replaceDispatchData">
-        replace into dispatch_data(dispatch_no,type,message,frequency,dept_code,patient_no,hospital_no,dispatch_type,create_time,update_time,hospital_id)
+    <insert id="insertDispatchData">
+        insert into dispatch_data(dispatch_no,type,message,frequency,dept_code,patient_no,hospital_no,dispatch_type,create_time,update_time,hospital_id)
         values
         values
         <foreach collection="list" item="item" index="index"
         <foreach collection="list" item="item" index="index"
                  separator=",">
                  separator=",">
@@ -71,4 +71,25 @@
             )
             )
         </foreach>
         </foreach>
     </insert>
     </insert>
+
+    <insert id="insertDispatchInfo">
+        insert into dispatch_info(code,type,message,frequency,depart_code,patient_code,adm_code,dispatch_type,create_time,update_time,hospital_id)
+        values
+        <foreach collection="list" item="item" index="index"
+                 separator=",">
+            (
+            #{item.code},
+            #{item.type},
+            #{item.message},
+            #{item.frequency},
+            #{item.departCode},
+            #{item.patientCode},
+            #{item.admCode},
+            #{item.dispatchType},
+            now(),
+            now(),
+            #{hospitalId}
+            )
+        </foreach>
+    </insert>
 </mapper>
 </mapper>