浏览代码

1、医院端静态信息维护

zhaops 4 年之前
父节点
当前提交
2f849c45fc

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

@@ -122,6 +122,9 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/graph/conceptInfo/getStaticKnowledge").permitAll()
                 .antMatchers("/graph/conceptInfo/getStaticKnowledgeForHIS").permitAll()
                 .antMatchers("/graph/conceptInfo/getPage").permitAll()
+                .antMatchers("/graph/conceptInfo/saveOrUpdateRecord").permitAll()
+                .antMatchers("/graph/conceptInfo/changeStatus").permitAll()
+                .antMatchers("/graph/conceptInfo/isExist").permitAll()
                 .antMatchers("/sys/planDetail/getPlanDetailDatas").permitAll()
                 .antMatchers("/sys/planDetail/savePlanDetails").permitAll()
                 .antMatchers("/sys/planDetail/cancelPlanDetails").permitAll()

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

@@ -164,6 +164,9 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/graph/conceptInfo/getStaticKnowledge", request)
                 || matchers("/graph/conceptInfo/getStaticKnowledgeForHIS", request)
                 || matchers("/graph/conceptInfo/getPage", request)
+                || matchers("/graph/conceptInfo/saveOrUpdateRecord", request)
+                || matchers("/graph/conceptInfo/changeStatus", request)
+                || matchers("/graph/conceptInfo/isExist", request)
                 || matchers("/sys/planDetail/getPlanDetailDatas", request)
                 || matchers("/sys/planDetail/savePlanDetails", request)
                 || matchers("/sys/planDetail/cancelPlanDetails", request)

+ 111 - 0
src/main/java/com/diagbot/facade/ConceptInfoFacade.java

@@ -1,6 +1,7 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.ConceptInfoDTO;
@@ -15,23 +16,29 @@ import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
+import com.diagbot.service.ConceptDetailService;
 import com.diagbot.service.impl.ConceptInfoServiceImpl;
 import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.SysUserUtils;
+import com.diagbot.vo.ChangeStatusVO;
 import com.diagbot.vo.ConceptInfoPageVO;
+import com.diagbot.vo.ConceptInfoVO;
 import com.diagbot.vo.StaticKnowledgeHISVO;
 import com.diagbot.vo.StaticKnowledgeIndexVO;
 import com.diagbot.vo.StaticKnowledgeVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
+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.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -51,6 +58,9 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
     @Autowired
     private ConceptDetailFacade conceptDetailFacade;
     @Autowired
+    @Qualifier("conceptDetailServiceImpl")
+    private ConceptDetailService conceptDetailService;
+    @Autowired
     private LisConfigFacade lisConfigFacade;
     @Autowired
     private PacsConfigFacade pacsConfigFacade;
@@ -490,4 +500,105 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
         page.setRecords(records);
         return page;
     }
+
+    /**
+     * 保存记录(新增or修改)
+     *
+     * @param conceptInfoVO
+     * @return
+     */
+    public Boolean saveOrUpdateRecord(ConceptInfoVO conceptInfoVO) {
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+        List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
+        //术语类型转换
+        String typeName = convertTypeName(ConceptTypeEnum.getName(Integer.valueOf(conceptInfoVO.getType())), 1, dicList);
+        conceptInfoVO.setTypeName(typeName);
+        if (conceptInfoVO.getId() == null) {
+            QueryWrapper<ConceptInfo> conceptInfoQueryWrapper = new QueryWrapper<>();
+            conceptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("name", conceptInfoVO.getName())
+                    .eq("type", typeName);
+            ConceptInfo conceptInfo = this.getOne(conceptInfoQueryWrapper, false);
+            //术语不存在,保存术语信息
+            if (conceptInfo == null) {
+                BeanUtil.copyProperties(conceptInfoVO, conceptInfo);
+                conceptInfo.setType(typeName);
+                conceptInfo.setCreator(userId);
+                conceptInfo.setGmtCreate(now);
+                conceptInfo.setModifier(userId);
+                conceptInfo.setGmtModified(now);
+                this.save(conceptInfo);
+            }
+            conceptInfoVO.setId(conceptInfo.getId());
+        }
+
+        //删除已有静态信息
+        QueryWrapper<ConceptDetail> conceptDetailQueryWrapper = new QueryWrapper<>();
+        conceptDetailQueryWrapper.eq("concept_id", conceptInfoVO.getId());
+        conceptDetailFacade.remove(conceptDetailQueryWrapper);
+        //插入新的静态信息
+        List<ConceptDetail> conceptDetailList = Lists.newLinkedList();
+        if (ListUtil.isNotEmpty(conceptInfoVO.getDetails())) {
+            conceptInfoVO.getDetails().forEach(detail -> {
+                ConceptDetail conceptDetail = new ConceptDetail();
+                BeanUtil.copyProperties(detail, conceptDetail);
+                conceptDetail.setConceptId(conceptInfoVO.getId());
+                conceptDetail.setCreator(userId);
+                conceptDetail.setGmtCreate(now);
+                conceptDetail.setModifier(userId);
+                conceptDetail.setGmtModified(now);
+                conceptDetailList.add(conceptDetail);
+            });
+            conceptDetailService.saveBatch(conceptDetailList);
+        }
+
+        return true;
+    }
+
+    /**
+     * 启用禁用
+     *
+     * @param changeStatusVO
+     * @return
+     */
+    public Boolean changeStatus(ChangeStatusVO changeStatusVO) {
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+        UpdateWrapper<ConceptDetail> conceptDetailUpdateWrapper = new UpdateWrapper<>();
+        conceptDetailUpdateWrapper.eq("concept_id", changeStatusVO.getId())
+                .set("gmt_modified", now)
+                .set("modifier", userId)
+                .set("is_deleted", changeStatusVO.getIsDeleted());
+        conceptDetailService.update(conceptDetailUpdateWrapper);
+        return true;
+    }
+
+    /**
+     * 是否已存在
+     *
+     * @param conceptInfoVO
+     * @return
+     */
+    public Boolean isExist(ConceptInfoVO conceptInfoVO) {
+        List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
+        //术语类型转换
+        String typeName = convertTypeName(ConceptTypeEnum.getName(Integer.valueOf(conceptInfoVO.getType())), 1, dicList);
+        conceptInfoVO.setTypeName(typeName);
+        QueryWrapper<ConceptInfo> conceptInfoQueryWrapper = new QueryWrapper<>();
+        conceptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("name", conceptInfoVO.getName())
+                .eq("type", typeName);
+        ConceptInfo conceptInfo = this.getOne(conceptInfoQueryWrapper, false);
+        if (conceptInfo == null) {
+            return false;
+        }
+        QueryWrapper<ConceptDetail> conceptDetailQueryWrapper = new QueryWrapper<>();
+        conceptDetailQueryWrapper.eq("concept_id", conceptInfo.getId());
+        List<ConceptDetail> conceptDetailList = conceptDetailService.list(conceptDetailQueryWrapper);
+        if (ListUtil.isEmpty(conceptDetailList)) {
+            return false;
+        }
+        return true;
+    }
 }

+ 16 - 0
src/main/java/com/diagbot/vo/ChangeStatusVO.java

@@ -0,0 +1,16 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/24 17:23
+ */
+@Getter
+@Setter
+public class ChangeStatusVO {
+    private Long id;
+    private String isDeleted;
+}

+ 47 - 0
src/main/java/com/diagbot/vo/ConceptDetailVO.java

@@ -0,0 +1,47 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/24 16:06
+ */
+@Getter
+@Setter
+public class ConceptDetailVO {
+    /**
+     * 明细id
+     */
+    private Long id;
+    /**
+     * 提示概念id
+     */
+    private Long conceptId;
+
+    /**
+     * 提示明细标题
+     */
+    private String title;
+
+    /**
+     * 提示明细内容
+     */
+    private String content;
+
+    /**
+     * 纯文本
+     */
+    private String text;
+
+    /**
+     * 提示明细序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径
+     */
+    private String contentType;
+}

+ 45 - 0
src/main/java/com/diagbot/vo/ConceptInfoVO.java

@@ -0,0 +1,45 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/24 16:04
+ */
+@Getter
+@Setter
+public class ConceptInfoVO {
+    private Long id;
+    /**
+     * 标准术语
+     */
+    private String name;
+    /**
+     * 术语类型
+     */
+    private String type;
+    /**
+     * 术语类型
+     */
+    @ApiModelProperty(hidden = true)
+    private String typeName;
+    /**
+     * 临床路径名称
+     */
+    private String clinicalPathwayName;
+
+    /**
+     * 注意事项名称
+     */
+    private String noticeName;
+
+    /**
+     * 静态知识明细
+     */
+    private List<ConceptDetailVO> details;
+}

+ 36 - 0
src/main/java/com/diagbot/web/ConceptInfoController.java

@@ -8,7 +8,9 @@ import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.StaticKnowledgeDTO;
 import com.diagbot.dto.StaticKnowledgeIndexDTO;
 import com.diagbot.facade.ConceptInfoFacade;
+import com.diagbot.vo.ChangeStatusVO;
 import com.diagbot.vo.ConceptInfoPageVO;
+import com.diagbot.vo.ConceptInfoVO;
 import com.diagbot.vo.StaticKnowledgeHISVO;
 import com.diagbot.vo.StaticKnowledgeIndexVO;
 import com.diagbot.vo.StaticKnowledgeVO;
@@ -94,4 +96,38 @@ public class ConceptInfoController {
         IPage<ConceptInfoDTO> data = conceptInfoFacade.getPage(conceptInfoPageVO);
         return RespDTO.onSuc(data);
     }
+
+    @ApiOperation(value = "保存静态知识-新增或修改[zhaops]",
+            notes = "id: id <br>" +
+                    "name: 术语名称 <br>" +
+                    "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验明细、5-检查、6-手术和操作 <br>" +
+                    "clinicalPathwayName: 临床路径名称<br>" +
+                    "noticeName: 注意事项名称<br>" +
+                    "details: 明细<br>")
+    @PostMapping("/saveOrUpdateRecord")
+    @SysLogger("saveOrUpdateRecord")
+    public RespDTO<Boolean> saveOrUpdateRecord(@Valid @RequestBody ConceptInfoVO conceptInfoVO) {
+        Boolean data = conceptInfoFacade.saveOrUpdateRecord(conceptInfoVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "静态知识启用禁用[zhaops]",
+            notes = "id: 术语id <br>" +
+                    "isDeleted: 启用状态:N-启用中、Y-已删除<br>")
+    @PostMapping("/changeStatus")
+    @SysLogger("changeStatus")
+    public RespDTO<Boolean> changeStatus(@Valid @RequestBody ChangeStatusVO changeStatusVO) {
+        Boolean data = conceptInfoFacade.changeStatus(changeStatusVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "静态知识是否存在[zhaops]",
+            notes = "name: 术语名称 <br>" +
+                    "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验明细、5-检查、6-手术和操作 <br>")
+    @PostMapping("/isExist")
+    @SysLogger("isExist")
+    public RespDTO<Boolean> isExist(@Valid @RequestBody ConceptInfoVO conceptInfoVO) {
+        Boolean data = conceptInfoFacade.isExist(conceptInfoVO);
+        return RespDTO.onSuc(data);
+    }
 }