Bladeren bron

API接口

zhoutg 5 jaren geleden
bovenliggende
commit
ab83651a6a

+ 2 - 1
doc/001.20200417第一版本/qc_init.sql

@@ -424,7 +424,8 @@ CREATE TABLE `med_home_page` (
   `gmt_modified` datetime DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
   `creator` varchar(60) DEFAULT '0' COMMENT '创建人,0表示无创建人值',
   `modifier` varchar(60) DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
-  PRIMARY KEY (`home_page_id`,`hospital_id`)
+  PRIMARY KEY (`home_page_id`,`hospital_id`),
+  KEY `behospital_code` (`behospital_code`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 -- ----------------------------

+ 1 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -47,6 +47,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/qc/behospitalInfo/execule").permitAll()
                 .antMatchers("/qc/behospitalInfo/analyze_rpc").permitAll()
                 .antMatchers("/qc/behospitalInfo/analyze").permitAll()
+                .antMatchers("/qc/behospitalInfo/analyze_api").permitAll()
                 .antMatchers("/**").authenticated();
 //                .antMatchers("/**").permitAll();
     }

+ 1 - 0
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -90,6 +90,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/qc/behospitalInfo/execule", request)
                 || matchers("/qc/behospitalInfo/analyze_rpc", request)
                 || matchers("/qc/behospitalInfo/analyze", request)
+                || matchers("/qc/behospitalInfo/analyze_api", request)
                 || matchers("/", request)) {
             return true;
         }

+ 24 - 0
src/main/java/com/diagbot/dto/MsgApiDTO.java

@@ -0,0 +1,24 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2020/4/14 13:07
+ */
+@Getter
+@Setter
+public class MsgApiDTO {
+    //得分
+    private BigDecimal score;
+    //提示信息
+    private String msg;
+    //单项否决
+    private String isReject;
+    //模块名称
+    private String modelName;
+}

+ 31 - 0
src/main/java/com/diagbot/dto/QcResultApiDTO.java

@@ -0,0 +1,31 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 质控评分结果信息
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-04-13
+ */
+@Data
+public class QcResultApiDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 等级
+     */
+    private String level;
+
+    /**
+     * 最后得分
+     */
+    private BigDecimal scoreRes;
+
+}

+ 66 - 0
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -9,10 +9,12 @@ import com.diagbot.dto.AlgorithmDTO;
 import com.diagbot.dto.AnalyzeDTO;
 import com.diagbot.dto.BehosDTO;
 import com.diagbot.dto.BehospitalInfoDTO;
+import com.diagbot.dto.MsgApiDTO;
 import com.diagbot.dto.MsgDTO;
 import com.diagbot.dto.OutputInfo;
 import com.diagbot.dto.QcCasesEntryDTO;
 import com.diagbot.dto.QcModeDTO;
+import com.diagbot.dto.QcResultApiDTO;
 import com.diagbot.dto.QcResultDTO;
 import com.diagbot.dto.RecordContentDTO;
 import com.diagbot.dto.Response;
@@ -34,6 +36,7 @@ import com.diagbot.util.ListUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.util.SysUserUtils;
 import com.diagbot.vo.AlgorithmVO;
+import com.diagbot.vo.AnalyzeApiVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.GetDetailVO;
@@ -187,6 +190,7 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         return res;
     }
 
+
     public AnalyzeDTO analyze(AnalyzeVO analyzeVO) {
         Long hospitalId = analyzeVO.getHospitalId();
         if (!analyzeVO.getIsTask()) {
@@ -615,4 +619,66 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
 //            }
 //        }
     }
+
+
+    /**
+     * 评分api
+     *
+     * @param analyzeApiVO
+     * @return
+     */
+    public Map<String, Object> analyzeApi(AnalyzeApiVO analyzeApiVO) {
+        AnalyzeVO analyzeVO = new AnalyzeVO();
+        BeanUtil.copyProperties(analyzeApiVO, analyzeVO);
+        // 评分
+        analyze(analyzeVO);
+        // 获取结果
+        GetDetailVO getDetailVO = new GetDetailVO();
+        getDetailVO.setHospitalId(analyzeApiVO.getHospitalId());
+        getDetailVO.setBehospitalCode(analyzeApiVO.getBehospitalCode());
+        return getByBehospitalCodeApi(getDetailVO);
+    }
+
+
+    /**
+     * 获取明细api
+     *
+     * @param getDetailVO
+     * @return
+     */
+    public Map<String, Object> getByBehospitalCodeApi(GetDetailVO getDetailVO) {
+        Map<String, Object> res = new HashMap<>(); // 返回结果
+        Long hospitalId = getDetailVO.getHospitalId();
+        // 获取病历信息
+        BehospitalInfo behospitalInfo = this.getOne(new QueryWrapper<BehospitalInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", getDetailVO.getHospitalId())
+                .eq("behospital_code", getDetailVO.getBehospitalCode()), false
+        );
+
+        BehosDTO behosDTO = new BehosDTO();
+        if (behospitalInfo == null) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该病历已删除!");
+        }
+        BeanUtil.copyProperties(behospitalInfo, behosDTO);
+
+        // 获取结果主表信息
+        QcResultDTO qcResultDTO = qcresultInfoFacade.getByBehospitalCode(getDetailVO);
+        if (qcResultDTO == null) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该病历未评分!");
+        }
+        QcResultApiDTO qcResultApiDTO = new QcResultApiDTO();
+        BeanUtil.copyProperties(qcResultDTO, qcResultApiDTO);
+        res.put("result", qcResultApiDTO);
+
+        // 获取提示信息
+        AnalyzeVO analyzeVO = new AnalyzeVO();
+        BeanUtil.copyProperties(getDetailVO, analyzeVO);
+        List<MsgDTO> msgDTOList = getMsg(analyzeVO);
+        List<MsgApiDTO> msgApiDTOList = BeanUtil.listCopyTo(msgDTOList, MsgApiDTO.class);
+        Map<String, List<MsgApiDTO>> msgMap = EntityUtil.makeEntityListMap(msgApiDTOList, "modelName");
+
+        res.put("details", msgMap);
+        return res;
+    }
 }

+ 18 - 0
src/main/java/com/diagbot/vo/AnalyzeApiVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @description:
+ * @author: zhoutg
+ * @time: 2020/4/13 18:31
+ */
+@Data
+public class AnalyzeApiVO {
+
+    private String behospitalCode; // 病历id
+    private Long hospitalId; //医院ID
+    @ApiModelProperty(hidden = true)
+    private Boolean isTask = true; // 使用hospitalId传入的值
+}

+ 13 - 0
src/main/java/com/diagbot/web/BehospitalInfoController.java

@@ -7,6 +7,7 @@ import com.diagbot.dto.BehospitalInfoDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.BehospitalInfoFacade;
 import com.diagbot.facade.QcresultInfoFacade;
+import com.diagbot.vo.AnalyzeApiVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.GetDetailVO;
@@ -84,6 +85,18 @@ public class BehospitalInfoController {
         return RespDTO.onSuc(behospitalInfoFacade.analyze(analyzeVO));
     }
 
+
+    @ApiOperation(value = "评分-对外api接口[by:zhoutg]",
+            notes = "")
+    @PostMapping("/analyze_api")
+    @SysLogger("analyze_api")
+    @Transactional
+//    @ApiIgnore
+    public RespDTO<Map<String, Object>> analyzeApi(@RequestBody AnalyzeApiVO analyzeApiVO) {
+        return RespDTO.onSuc(behospitalInfoFacade.analyzeApi(analyzeApiVO));
+    }
+
+
     @ApiOperation(value = "新增质控条目[by:zhoutg]",
             notes = "")
     @PostMapping("/addCase")