浏览代码

温附一his接口对接

chengyao 4 年之前
父节点
当前提交
097fe2176d

+ 24 - 0
src/main/java/com/diagbot/client/HisServiceClient.java

@@ -0,0 +1,24 @@
+package com.diagbot.client;
+
+import com.diagbot.client.hystrix.HisServiceHystrix;
+import com.diagbot.dto.SentEntryRecordDTO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.net.URI;
+
+
+/**
+ * @description: his远程调用
+ * @author: zhoutg
+ * @date: 2020/4/13 18:28
+ */
+@FeignClient(name = "his", url = "url-placehokder", fallback = HisServiceHystrix.class)
+public interface HisServiceClient {
+
+    @PostMapping(value = "/api/LtBlzk/Ltzkinterface")
+    void sentEntryRecord(URI uri, SentEntryRecordDTO sentEntryRecordDTO);
+}
+
+
+

+ 0 - 1
src/main/java/com/diagbot/client/QcServiceClient.java

@@ -23,7 +23,6 @@ public interface QcServiceClient {
 
     @PostMapping(value = "/analyse/standardFieldDock")
     Response<OutputInfo> analyseField(URI uri, QueryVo queryVo);
-
 }
 
 

+ 24 - 0
src/main/java/com/diagbot/client/hystrix/HisServiceHystrix.java

@@ -0,0 +1,24 @@
+package com.diagbot.client.hystrix;
+
+
+import com.diagbot.client.HisServiceClient;
+import com.diagbot.dto.SentEntryRecordDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.net.URI;
+
+/**
+ * @description: 病历质控远程调用熔断器
+ * @author: zhoutg
+ * @date: 2020/4/13 18:23
+ */
+@Component
+@Slf4j
+public class HisServiceHystrix implements HisServiceClient {
+
+    @Override
+    public void sentEntryRecord(URI uri, SentEntryRecordDTO sentEntryRecordDTO) {
+        log.error("【hystrix】调用{}异常", "sentEntryRecord");
+    }
+}

+ 58 - 0
src/main/java/com/diagbot/dto/SentEntryRecordDTO.java

@@ -0,0 +1,58 @@
+package com.diagbot.dto;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+ * @Description:
+ * @author: cy
+ * @time: 2021/08/03 14:15
+ */
+@Getter
+@Setter
+public class SentEntryRecordDTO {
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 病人住院序号
+     */
+    private String behospitalCode;
+
+    /**
+     * 缺陷信息
+     */
+    private String msg;
+
+    /**
+     * 所属模块名称
+     */
+    private String modeName;
+
+
+    /**
+     * 分值
+     */
+    private BigDecimal score;
+
+    /**
+     * 核查时间
+     */
+    private Date checkTime;
+
+    /**
+     * 核查人
+     */
+    private String checkName;
+
+    /**
+     * 核查人编号
+     */
+
+    private String checkId;
+}

+ 19 - 0
src/main/java/com/diagbot/facade/QcClientFacade.java

@@ -1,8 +1,10 @@
 package com.diagbot.facade;
 
+import com.diagbot.client.HisServiceClient;
 import com.diagbot.client.QcServiceClient;
 import com.diagbot.dto.OutputInfo;
 import com.diagbot.dto.Response;
+import com.diagbot.dto.SentEntryRecordDTO;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.util.SpringContextUtil;
@@ -24,6 +26,8 @@ public class QcClientFacade {
     @Autowired
     private QcServiceClient qcServiceClient;
     @Autowired
+    private HisServiceClient hisServiceClient;
+    @Autowired
     private SysHospitalSetFacade sysHospitalSetFacade;
 
     public Response<OutputInfo> extract(QueryVo queryVo) {
@@ -57,4 +61,19 @@ public class QcClientFacade {
 
         return qcServiceClient.analyseField(uri, queryVo);
     }
+
+    public void sentEntryRecord(SentEntryRecordDTO sentEntryRecordDTO) {
+        URI uri = null;
+        String code = "sending_his_pre";
+        String url = sysHospitalSetFacade.getValue(Long.valueOf(sentEntryRecordDTO.getHospitalId()), code);
+        if (StringUtil.isBlank(url)) {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "配置表内找不到评分接口地址数据!");
+        }
+        try {
+            uri = new URI(url);
+        } catch (Exception e) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
+        }
+        hisServiceClient.sentEntryRecord(uri, sentEntryRecordDTO);
+    }
 }

+ 52 - 0
src/main/java/com/diagbot/facade/QcresultInfoFacade.java

@@ -5,11 +5,15 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.diagbot.dto.AlgorithmDTO;
 import com.diagbot.dto.AnalyzeDTO;
 import com.diagbot.dto.QcResultDTO;
+import com.diagbot.dto.SentEntryRecordDTO;
 import com.diagbot.entity.BehospitalInfo;
 import com.diagbot.entity.MedCheckInfo;
 import com.diagbot.entity.MedQcresultCases;
+import com.diagbot.entity.QcCasesEntry;
+import com.diagbot.entity.QcMode;
 import com.diagbot.entity.QcresultDetail;
 import com.diagbot.entity.QcresultInfo;
+import com.diagbot.entity.SysUser;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
@@ -32,6 +36,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
@@ -54,6 +59,14 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
     @Autowired
     @Qualifier("medQcresultCasesServiceImpl")
     private MedQcresultCasesServiceImpl medQcresultCasesService;
+    @Autowired
+    private QcClientFacade qcClientFacade;
+    @Autowired
+    private QcCasesEntryFacade qcCasesEntryFacade;
+    @Autowired
+    private QcModeFacade qcModeFacade;
+    @Autowired
+    private SysUserFacade sysUserFacade;
 
     /**
      * 修改评分结果信息
@@ -234,6 +247,45 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
                 qcresultDetailAdd.setGmtModified(now);
                 qcresultDetailAdd.setModifier(useId.toString());
                 qcresultDetailServiceImpl.save(qcresultDetailAdd);
+                //发送质控人员新增人工缺陷到his系统
+                SentEntryRecordDTO sentEntryRecordDTO = new SentEntryRecordDTO();
+                BeanUtil.copyProperties(qcresultDetailAdd, sentEntryRecordDTO);
+                MedCheckInfo medCheckInfo = medCheckInfoFacade.lambdaQuery()
+                        .eq(MedCheckInfo::getBehospitalCode, sentEntryRecordDTO.getBehospitalCode())
+                        .eq(MedCheckInfo::getHospitalId, qcresultDetailAdd.getHospitalId())
+                      //  .eq(MedCheckInfo::getStatus, 1)
+                        .in(MedCheckInfo::getCheckType, Arrays.asList(0,2))
+                        .eq(MedCheckInfo::getIsDeleted, IsDeleteEnum.N.getKey()).one();
+                if(null != medCheckInfo){
+                    sentEntryRecordDTO.setCheckName(medCheckInfo.getCheckName());
+                    sentEntryRecordDTO.setCheckTime(medCheckInfo.getCheckTime());
+                }
+                SysUser sysUser = sysUserFacade.lambdaQuery()
+                        .eq(SysUser::getId, medCheckInfo.getCheckId())
+                        .eq(SysUser::getStatus, 1)
+                        .eq(SysUser::getIsDeleted, IsDeleteEnum.N.getKey()).one();
+                if(null != sysUser){
+                    sentEntryRecordDTO.setCheckId(sysUser.getUsername());
+                }
+                QcCasesEntry qcCasesEntry = qcCasesEntryFacade.lambdaQuery()
+                        .eq(QcCasesEntry::getId, qcresultDetailAdd.getCasesEntryId())
+                        .eq(QcCasesEntry::getIsDeleted, IsDeleteEnum.N.getKey()).one();
+                if(null != qcCasesEntry){
+                    QcMode qcMode = qcModeFacade.lambdaQuery()
+                            .eq(QcMode::getId, qcCasesEntry.getModeId())
+                            .eq(QcMode::getIsDeleted, IsDeleteEnum.N.getKey()).one();
+                    if(null != qcCasesEntry){
+                        sentEntryRecordDTO.setModeName(qcMode.getName());
+                    }
+                }
+
+
+                try {
+                    qcClientFacade.sentEntryRecord(sentEntryRecordDTO);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+
                 break;
             case 2:
                 //删除条目