Sfoglia il codice sorgente

经典病历及诊疗指南代码合并

wangsy 10 mesi fa
parent
commit
af25ae144d
30 ha cambiato i file con 750 aggiunte e 113 eliminazioni
  1. 28 57
      pom.xml
  2. 32 5
      src/main/java/com/diagbot/aggregate/AssemblePushAggregate.java
  3. 53 0
      src/main/java/com/diagbot/client/CdssCoreClient.java
  4. 72 0
      src/main/java/com/diagbot/client/hystrix/CdssCoreHystrix.java
  5. 6 0
      src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  6. 7 1
      src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  7. 39 0
      src/main/java/com/diagbot/dto/CaseBatchDTO.java
  8. 42 0
      src/main/java/com/diagbot/dto/ClassicCaseIndexDTO.java
  9. 1 1
      src/main/java/com/diagbot/dto/ConceptDetailDTO.java
  10. 64 0
      src/main/java/com/diagbot/dto/KlClassicCaseDTO.java
  11. 1 1
      src/main/java/com/diagbot/dto/KlConceptDetailDTO.java
  12. 4 0
      src/main/java/com/diagbot/dto/PushDTO.java
  13. 1 1
      src/main/java/com/diagbot/dto/StaticKnowledgeDetailDTO.java
  14. 4 0
      src/main/java/com/diagbot/dto/StaticKnowledgeIndexDTO.java
  15. 1 1
      src/main/java/com/diagbot/entity/ConceptDetail.java
  16. 148 19
      src/main/java/com/diagbot/facade/KlConceptStaticFacade.java
  17. 23 0
      src/main/java/com/diagbot/facade/PushFacade.java
  18. 23 0
      src/main/java/com/diagbot/facade/SysUserFacade.java
  19. 4 0
      src/main/java/com/diagbot/mapper/SysUserMapper.java
  20. 5 0
      src/main/java/com/diagbot/service/SysUserService.java
  21. 6 0
      src/main/java/com/diagbot/service/impl/SysUserServiceImpl.java
  22. 1 1
      src/main/java/com/diagbot/vo/ConceptDetailVO.java
  23. 33 0
      src/main/java/com/diagbot/vo/KlClassicCasePageVO.java
  24. 71 0
      src/main/java/com/diagbot/vo/KlClassicCaseVO.java
  25. 1 1
      src/main/java/com/diagbot/vo/ScaleStaticAllVO.java
  26. 1 1
      src/main/java/com/diagbot/vo/StaticKnowledgeVO.java
  27. 63 17
      src/main/java/com/diagbot/web/ConceptInfoController.java
  28. 1 1
      src/main/java/com/diagbot/web/PushController.java
  29. 6 6
      src/main/resources/application-dev.yml
  30. 9 0
      src/main/resources/mapper/SysUserMapper.xml

+ 28 - 57
pom.xml

@@ -192,63 +192,34 @@
         </dependency>
     </dependencies>
     <build>
-       <plugins>
-			<plugin>
-				<artifactId>maven-dependency-plugin</artifactId>
-				<executions>
-					<execution>
-						<id>copy</id>
-						<phase>package</phase>
-						<goals>
-							<goal>copy-dependencies</goal>
-						</goals>
-						<configuration>
-							<outputDirectory>${project.build.directory}/lib</outputDirectory>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<artifactId>maven-resources-plugin</artifactId>
-				<executions>
-					<execution>
-						<id>copy-resources</id>
-						<phase>package</phase>
-						<goals>
-							<goal>copy-resources</goal>
-						</goals>
-						<configuration>
-							<resources>
-								<resource>
-									<directory>src/main/resources</directory>
-								</resource>
-							</resources>
-							<outputDirectory>${project.build.directory}/resources</outputDirectory>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<artifactId>maven-jar-plugin</artifactId>
-				<configuration>
-					<excludes>
-						<exclude>mapper</exclude>
-						<exclude>*.**</exclude>
-						<exclude>**/*.xml</exclude>
-						<exclude>**/*.yml</exclude>
-					</excludes>
-					<archive>
-						<manifest>
-							<mainClass>${main-class}</mainClass>
-							<addClasspath>true</addClasspath>
-							<classpathPrefix>lib/</classpathPrefix>
-							<useUniqueVersions>false</useUniqueVersions>
-						</manifest>
-					</archive>
-					<outputDirectory>${project.build.directory}</outputDirectory>
-				</configuration>
-			</plugin>
-		</plugins>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <!-- 添加docker-maven插件 -->
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+                <version>1.1.1</version>
+                <configuration>
+                    <imageName>${docker.image.prefix}/${project.artifactId}:${project.version}</imageName>
+                    <forceTags>true</forceTags>
+                    <!--镜像的FROM,使用压缩的小镜像-->
+                    <baseImage>frolvlad/alpine-oraclejre8:slim</baseImage>
+                    <entryPoint>["java", "-jar", "-Xms256m", "-Xmx4096m", "-Duser.timezone=GMT+8", "/${project.build.finalName}.jar"]</entryPoint>
+                    <resources>
+                        <resource>
+                            <targetPath>/</targetPath>
+                            <directory>${project.build.directory}</directory>
+                            <include>${project.build.finalName}.jar</include>
+                        </resource>
+                    </resources>
+                    <serverId>docker-registry</serverId>
+                    <registryUrl>${registryUrl}</registryUrl>
+                </configuration>
+            </plugin>
+        </plugins>
     </build>
 
 </project>

+ 32 - 5
src/main/java/com/diagbot/aggregate/AssemblePushAggregate.java

@@ -15,11 +15,7 @@ import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -42,6 +38,7 @@ public class AssemblePushAggregate {
             @DataConsumer("retDiagMap") Map<String, List<PushBaseDTO>> retDiagMap,
             @DataConsumer("retOperation") List<PushBaseDTO> retOperation,
             @DataConsumer("retDrug") List<PushBaseDTO> retDrug,
+            @DataConsumer("retDrugs") Map<String, List<PushBaseDTO>> retDrugs,
             @DataConsumer("retScale") List<PushScaleDTO> retScale,
             @DataConsumer("retNurse") List<PushBaseDTO> retNurse) {
         //检验
@@ -223,6 +220,36 @@ public class AssemblePushAggregate {
         return retDrug;
     }
 
+    @DataProvider("retDrugs")
+    public Map<String, List<PushBaseDTO>> retDrugs(@InvokeParameter("pushDTO") PushDTO data,
+                                                   @InvokeParameter("hospitalId") Long hospitalId) {
+        //药品
+        Map<String, List<PushBaseDTO>> retDrugs = new LinkedHashMap<>();
+        if(MapUtils.isNotEmpty(data.getMedicine())) {
+            retDrugs = data.getMedicine();
+            for(Map.Entry<String, List<PushBaseDTO>> entry : retDrugs.entrySet()) {
+                List<String> uniqueNameList = entry.getValue().stream()
+                        .map(i -> i.getName())
+                        .collect(Collectors.toList());
+                Map<String, Map<String, Map<String, List<String>>>> uniqueNameMap
+                        = mappingConfigFacade.groupByUniqueNameWithName(uniqueNameList, ConceptTypeEnum.Drug.getKey(), hospitalId, StatusEnum.Enable.getKey());
+
+                if (uniqueNameMap != null && uniqueNameMap.size() > 0) {
+                    entry.getValue().forEach(item -> {
+                        if (uniqueNameMap.get(item.getName()) != null) {
+                            item.setHisNameList(uniqueNameMap.get(item.getName())
+                                    .values().stream()
+                                    .map(i -> i.keySet())
+                                    .flatMap(Collection::stream)
+                                    .collect(Collectors.toList()));
+                        }
+                    });
+                }
+            }
+        }
+        return retDrugs;
+    }
+
     @DataProvider("retScale")
     public List<PushScaleDTO> retScale(@InvokeParameter("pushDTO") PushDTO data,
                                        @InvokeParameter("hospitalId") Long hospitalId) {

+ 53 - 0
src/main/java/com/diagbot/client/CdssCoreClient.java

@@ -70,6 +70,15 @@ public interface CdssCoreClient {
     @PostMapping("/retrieval/staticKnowledgeIndex")
     RespDTO<List<StaticKnowledgeIndexDTO>> staticKnowledgeIndex(@RequestBody @Valid StaticKnowledgeIndexVO staticKnowledgeIndexVO);
 
+    /**
+     * 经典病例检索
+     *
+     * @param staticKnowledgeIndexVO
+     * @return
+     */
+    @PostMapping("/retrieval/classicCaseIndex")
+    RespDTO<List<ClassicCaseIndexDTO>> classicCaseIndex(@RequestBody @Valid StaticKnowledgeIndexVO staticKnowledgeIndexVO);
+
     /**
      * 术语关联医学术语检索
      *
@@ -134,6 +143,15 @@ public interface CdssCoreClient {
     @PostMapping("/kl/conceptStatic/getStaticKnowledge")
     RespDTO<StaticKnowledgeDTO> getStaticKnowledge(@Valid @RequestBody ScaleStaticAllVO scaleStaticAllVO);
 
+    /**
+     * 根据名称和类型获取经典病历内容
+     *
+     * @param scaleStaticAllVO
+     * @return
+     */
+    @PostMapping("/kl/conceptStatic/getClassicCaseInfo")
+    RespDTO<StaticKnowledgeDTO> getClassicCaseInfo(@Valid @RequestBody ScaleStaticAllVO scaleStaticAllVO);
+
     /**
      * 分页查询
      *
@@ -143,6 +161,14 @@ public interface CdssCoreClient {
     @PostMapping("/kl/conceptStatic/getPage")
     RespDTO<Page<KlConceptStaticDTO>> getPage(@Valid @RequestBody KlConceptStaticPageVO klConceptStaticPageVO);
 
+    /**
+     * 分页查询经典病例
+     *
+     * @param klClassicCasePageVO
+     * @return
+     */
+    @PostMapping("/kl/conceptStatic/getClassicCase")
+    RespDTO<Page<KlClassicCaseDTO>> getClassicCase(@Valid @RequestBody KlClassicCasePageVO klClassicCasePageVO);
 
     /**
      * 静态知识检索(分页返回)
@@ -162,6 +188,15 @@ public interface CdssCoreClient {
     @PostMapping("/kl/conceptStatic/saveOrUpdateRecord")
     RespDTO<Boolean> saveOrUpdateRecord(@Valid @RequestBody KlConceptStaticVO klConceptStaticVO);
 
+    /**
+     * 保存经典病例
+     *
+     * @param klClassicCaseVO
+     * @return
+     */
+    @PostMapping("/kl/conceptStatic/saveOrUpdateCase")
+    RespDTO<Boolean> saveOrUpdateCase(@Valid @RequestBody KlClassicCaseVO klClassicCaseVO);
+
     /**
      * 静态知识启用禁用
      *
@@ -171,6 +206,15 @@ public interface CdssCoreClient {
     @PostMapping("/kl/conceptStatic/changeStatus")
     RespDTO<Boolean> changeStatus(@Valid @RequestBody ChangeStatusVO changeStatusVO);
 
+    /**
+     * 经典病例启用禁用
+     *
+     * @param changeStatusVO
+     * @return
+     */
+    @PostMapping("/kl/conceptStatic/changeCaseStatus")
+    RespDTO<Boolean> changeCaseStatus(@Valid @RequestBody ChangeStatusVO changeStatusVO);
+
     /**
      * 根据id获取静态知识
      *
@@ -180,6 +224,15 @@ public interface CdssCoreClient {
     @PostMapping("/kl/conceptStatic/getRecordById")
     RespDTO<KlConceptStaticDTO> getRecordById(@Valid @RequestBody IdVO idVO);
 
+    /**
+     * 根据id获取经典病例
+     *
+     * @param idVO
+     * @return
+     */
+    @PostMapping("/kl/conceptStatic/getCaseById")
+    RespDTO<KlClassicCaseDTO> getCaseById(@Valid @RequestBody IdVO idVO);
+
     /**
      * 静态知识是否已存在
      *

+ 72 - 0
src/main/java/com/diagbot/client/hystrix/CdssCoreHystrix.java

@@ -90,6 +90,18 @@ public class CdssCoreHystrix implements CdssCoreClient {
         return null;
     }
 
+    /**
+     * 经典病例检索
+     *
+     * @param staticKnowledgeIndexVO
+     * @return
+     */
+    @Override
+    public RespDTO<List<ClassicCaseIndexDTO>> classicCaseIndex(@RequestBody @Valid StaticKnowledgeIndexVO staticKnowledgeIndexVO) {
+        log.error("【hystrix】调用{}异常", "classicCaseIndex");
+        return null;
+    }
+
     /**
      * 术语关联医学术语检索
      *
@@ -174,6 +186,18 @@ public class CdssCoreHystrix implements CdssCoreClient {
         return null;
     }
 
+    /**
+     * 根据名称和类型获取经典病例内容
+     *
+     * @param scaleStaticAllVO
+     * @return
+     */
+    @Override
+    public RespDTO<StaticKnowledgeDTO> getClassicCaseInfo(@Valid @RequestBody ScaleStaticAllVO scaleStaticAllVO) {
+        log.error("【hystrix】调用{}异常", "getClassicCaseInfo");
+        return null;
+    }
+
     /**
      * 分页查询
      *
@@ -186,6 +210,18 @@ public class CdssCoreHystrix implements CdssCoreClient {
         return null;
     }
 
+    /**
+     * 分页查询
+     *
+     * @param klClassicCasePageVO
+     * @return
+     */
+    @Override
+    public RespDTO<Page<KlClassicCaseDTO>> getClassicCase(@Valid @RequestBody KlClassicCasePageVO klClassicCasePageVO) {
+        log.error("【hystrix】调用{}异常", "getClassicCase");
+        return null;
+    }
+
     /**
      * 静态知识检索(分页返回)
      *
@@ -210,6 +246,18 @@ public class CdssCoreHystrix implements CdssCoreClient {
         return null;
     }
 
+    /**
+     * 保存经典病例
+     *
+     * @param klClassicCaseVO
+     * @return
+     */
+    @Override
+    public RespDTO<Boolean> saveOrUpdateCase(@Valid @RequestBody KlClassicCaseVO klClassicCaseVO) {
+        log.error("【hystrix】调用{}异常", "saveOrUpdateCase");
+        return null;
+    }
+
     /**
      * 静态知识启用禁用
      *
@@ -222,6 +270,18 @@ public class CdssCoreHystrix implements CdssCoreClient {
         return null;
     }
 
+    /**
+     * 经典病例启用禁用
+     *
+     * @param changeStatusVO
+     * @return
+     */
+    @Override
+    public RespDTO<Boolean> changeCaseStatus(@Valid @RequestBody ChangeStatusVO changeStatusVO) {
+        log.error("【hystrix】调用{}异常", "changeCaseStatus");
+        return null;
+    }
+
     /**
      * 根据id获取静态知识
      *
@@ -234,6 +294,18 @@ public class CdssCoreHystrix implements CdssCoreClient {
         return null;
     }
 
+    /**
+     * 根据id获取经典病例
+     *
+     * @param idVO
+     * @return
+     */
+    @Override
+    public RespDTO<KlClassicCaseDTO> getCaseById(@Valid @RequestBody IdVO idVO) {
+        log.error("【hystrix】调用{}异常", "getCaseById");
+        return null;
+    }
+
     /**
      * 静态知识是否已存在
      *

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

@@ -99,15 +99,20 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/demo/retrieval/diseaseIndex").permitAll()
                 .antMatchers("/kl/conceptInfo/staticKnowledgeIndex").permitAll()
                 .antMatchers("/kl/conceptInfo/staticKnowledgeIndexWithoutInfo").permitAll()
+                .antMatchers("/kl/conceptInfo/classicCaseIndexWithoutInfo").permitAll()
                 .antMatchers("/kl/conceptInfo/getStaticKnowledge").permitAll()
                 .antMatchers("/kl/conceptInfo/getStaticKnowledgeForHIS").permitAll()
                 .antMatchers("/kl/conceptInfo/isExistForHIS").permitAll()
                 .antMatchers("/kl/conceptInfo/getPage").permitAll()
+                .antMatchers("/kl/conceptInfo/getClassicCase").permitAll()
                 .antMatchers("/kl/conceptInfo/staticIndexPage").permitAll()
                 //.antMatchers("/kl/conceptInfo/saveOrUpdateRecord").permitAll()
+                .antMatchers("/kl/conceptInfo/saveOrUpdateCase").permitAll()
                 //.antMatchers("/kl/conceptInfo/changeStatus").permitAll()
+                .antMatchers("/kl/conceptInfo/changeCaseStatus").permitAll()
                 .antMatchers("/kl/conceptInfo/isExist").permitAll()
                 .antMatchers("/kl/conceptInfo/getRecordById").permitAll()
+                .antMatchers("/kl/conceptInfo/getCaseById").permitAll()
                 .antMatchers("/kl/conceptInfo/updateHasInfoStatusBatch").permitAll()
                 .antMatchers("/sys/planDetail/getPlanDetailDatas").permitAll()
                 //.antMatchers("/sys/planDetail/savePlanDetails").permitAll()
@@ -141,6 +146,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/test/logTest").permitAll()
                 .antMatchers("/klRule/getRulePage").permitAll()
                 .antMatchers("/klRule/getRuleDetail").permitAll()
+                .antMatchers("/dataPage/docking/getClassicCaseInfo").permitAll()
                 .antMatchers("/**").authenticated();
         //                .antMatchers("/**").permitAll();
     }

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

@@ -83,7 +83,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/sys/user/getJwt", request)
                 || matchers("/sys/user/refreshJwt", request)
                 || matchers("/sys/user/checkToken", request)
-                //|| matchers("/sys/user/getUserOrgMenu", request)
+                || matchers("/sys/user/getUserOrgMenu", request)
                 || matchers("/oauth/token", request)
                 || matchers("/oauth/check_token", request)
                 || matchers("/tran/mappingConfig/exportExcelModule", request)
@@ -141,15 +141,21 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/demo/retrieval/diseaseIndex", request)
                 || matchers("/kl/conceptInfo/staticKnowledgeIndex", request)
                 || matchers("/kl/conceptInfo/staticKnowledgeIndexWithoutInfo", request)
+                || matchers("/kl/conceptInfo/classicCaseIndexWithoutInfo", request)
                 || matchers("/kl/conceptInfo/getStaticKnowledge", request)
+                || matchers("/kl/conceptInfo/getClassicCaseInfo", request)
                 || matchers("/kl/conceptInfo/getStaticKnowledgeForHIS", request)
                 || matchers("/kl/conceptInfo/isExistForHIS", request)
                 || matchers("/kl/conceptInfo/getPage", request)
+                || matchers("/kl/conceptInfo/getClassicCase", request)
                 || matchers("/kl/conceptInfo/staticIndexPage", request)
                 //|| matchers("/kl/conceptInfo/saveOrUpdateRecord", request)
+                || matchers("/kl/conceptInfo/saveOrUpdateCase", request)
                 //|| matchers("/kl/conceptInfo/changeStatus", request)
+                || matchers("/kl/conceptInfo/changeCaseStatus", request)
                 || matchers("/kl/conceptInfo/isExist", request)
                 || matchers("/kl/conceptInfo/getRecordById", request)
+                || matchers("/kl/conceptInfo/getCaseById", request)
                 || matchers("/kl/conceptInfo/updateHasInfoStatusBatch", request)
                 || matchers("/sys/planDetail/getPlanDetailDatas", request)
                 /*|| matchers("/sys/planDetail/savePlanDetails", request)

+ 39 - 0
src/main/java/com/diagbot/dto/CaseBatchDTO.java

@@ -0,0 +1,39 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/6/7 10:27
+ */
+@Getter
+@Setter
+public class CaseBatchDTO {
+    private Long id;
+    private Integer status;
+    private String name;
+    private String synonyms;
+    private Integer type;
+    private Integer age;
+    private String sex;
+    private String dept;
+    //病例标题
+    private String title;
+    private String chief;
+    private String present;
+    private String pasts;
+    private String personal;
+    private String family;
+    private String marital;
+    private String vital;
+    private String lis;
+    private String pacs;
+    //西医诊断
+    private String diag;
+    //中医诊断
+    private String tcmdiag;
+    //医嘱
+    private String drug;
+}

+ 42 - 0
src/main/java/com/diagbot/dto/ClassicCaseIndexDTO.java

@@ -0,0 +1,42 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/18 15:59
+ */
+@Getter
+@Setter
+public class ClassicCaseIndexDTO {
+    /**
+     * 术语id
+     */
+    private Long id;
+    /**
+     * 术语名称
+     */
+    private String name;
+    /**
+     * 词性
+     */
+    private Integer type;
+    /**
+     * 词性
+     */
+    private String typeName;
+    /**
+     * 同义词
+     */
+    private String retrievalName;
+    /**
+     * 是否有静态知识
+     */
+    private Integer hasInfo = 0;
+    /**
+     * 启用禁用
+     */
+    private Integer status;
+}

+ 1 - 1
src/main/java/com/diagbot/dto/ConceptDetailDTO.java

@@ -37,7 +37,7 @@ public class ConceptDetailDTO {
     private Integer orderNo;
 
     /**
-     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案
+     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案,5-诊疗指南
      */
     private String contentType;
 }

+ 64 - 0
src/main/java/com/diagbot/dto/KlClassicCaseDTO.java

@@ -0,0 +1,64 @@
+package com.diagbot.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/2/24 13:38
+ */
+@Getter
+@Setter
+public class KlClassicCaseDTO {
+    /**
+     * 术语id
+     */
+    private Long id;
+    /**
+     * 术语名称
+     */
+    private String name;
+    /**
+     * 关联标题
+     */
+    private String title;
+    /**
+     * 术语类型(词性)
+     */
+    private Integer type;
+    /**
+     * 术语类型(词性)
+     */
+    private String typeName;
+    /**
+     * 临床路径名称
+     */
+    private String clinicalPathwayName;
+    /**
+     * 注意事项名称
+     */
+    private String noticeName;
+    /**
+     * 修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date gmtModified;
+    /**
+     * 修改人
+     */
+    private String modifier;
+    /**
+     * 启用状态
+     */
+    private Integer status;
+    /**
+     * 明细
+     */
+    private List<KlConceptDetailDTO> details;
+
+}

+ 1 - 1
src/main/java/com/diagbot/dto/KlConceptDetailDTO.java

@@ -37,7 +37,7 @@ public class KlConceptDetailDTO {
     private Integer orderNo;
 
     /**
-     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案
+     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案,5-诊疗指南
      */
     private String contentType;
 }

+ 4 - 0
src/main/java/com/diagbot/dto/PushDTO.java

@@ -29,6 +29,8 @@ public class PushDTO {
     private List<PushBaseDTO> operations = new ArrayList<>();
     // 药品
     private List<PushBaseDTO> medicines = new ArrayList<>();
+
+    private Map<String, List<PushBaseDTO>> medicine;
     // 并发症
     private List<PushBaseDTO> complications = new ArrayList<>();
     // 护理
@@ -39,6 +41,8 @@ public class PushDTO {
     private List<TreatDTO> treat = new ArrayList<>();
     //推送量表
     private List<PushScaleDTO> scale = Lists.newArrayList();
+    //经典病例
+    private List<PushBaseDTO> classicCase = new ArrayList<>();
 
     // 记录调试信息
     private Map<String, Object> debug = new LinkedHashMap<>();

+ 1 - 1
src/main/java/com/diagbot/dto/StaticKnowledgeDetailDTO.java

@@ -37,7 +37,7 @@ public class StaticKnowledgeDetailDTO {
     private Integer orderNo;
 
     /**
-     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案
+     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案,5-诊疗指南
      */
     private String contentType;
 }

+ 4 - 0
src/main/java/com/diagbot/dto/StaticKnowledgeIndexDTO.java

@@ -63,6 +63,10 @@ public class StaticKnowledgeIndexDTO {
      * 是否有治疗方案静态知识
      */
     private Integer hasTreatInfo = 0;
+    /**
+     * 是否有诊疗指南静态知识
+     */
+    private Integer hasGuideInfo = 0;
     /**
      * 启用禁用
      */

+ 1 - 1
src/main/java/com/diagbot/entity/ConceptDetail.java

@@ -77,7 +77,7 @@ public class ConceptDetail implements Serializable {
     private Integer orderNo;
 
     /**
-     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案
+     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案,5-诊疗指南
      */
     private String contentType;
 

+ 148 - 19
src/main/java/com/diagbot/facade/KlConceptStaticFacade.java

@@ -4,35 +4,22 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.client.CdssCoreClient;
-import com.diagbot.dto.KlConceptStaticDTO;
-import com.diagbot.dto.RespDTO;
-import com.diagbot.dto.StaticKnowledgeDTO;
-import com.diagbot.dto.StaticKnowledgeHISDTO;
-import com.diagbot.dto.StaticKnowledgeIndexDTO;
-import com.diagbot.dto.StaticKnowledgeIndexPageDTO;
+import com.diagbot.dto.*;
 import com.diagbot.entity.SysUser;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
+import com.diagbot.service.MappingConfigService;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.UserUtils;
-import com.diagbot.vo.ChangeStatusVO;
-import com.diagbot.vo.IdVO;
-import com.diagbot.vo.KlConceptStaticPageVO;
-import com.diagbot.vo.KlConceptStaticVO;
-import com.diagbot.vo.PushJoinVO;
-import com.diagbot.vo.ScaleStaticAllVO;
-import com.diagbot.vo.SearchData;
-import com.diagbot.vo.StaticKnowledgeHISVO;
-import com.diagbot.vo.StaticKnowledgeIndexPageVO;
-import com.diagbot.vo.StaticKnowledgeIndexVO;
-import com.diagbot.vo.StaticKnowledgeVO;
+import com.diagbot.vo.*;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -55,6 +42,9 @@ public class KlConceptStaticFacade {
     MrFacade mrFacade;
     @Autowired
     private AssembleFacade assembleFacade;
+    @Autowired
+    private MappingConfigFacade mappingConfigFacade;
+    private MappingConfigService mappingConfigService;
 
 
     /**
@@ -65,8 +55,49 @@ public class KlConceptStaticFacade {
      */
     public List<StaticKnowledgeIndexDTO> staticKnowledgeIndex(StaticKnowledgeIndexVO staticKnowledgeIndexVO) {
         List<StaticKnowledgeIndexDTO> retList = Lists.newLinkedList();
+        List<ClassicCaseIndexDTO> cases = Lists.newLinkedList();
+        RespDTO<List<ClassicCaseIndexDTO>> caseDTO = RespDTO.onSuc(new ArrayList<>(0));
+        RespDTO<List<StaticKnowledgeIndexDTO>> respDTO = RespDTO.onSuc(new ArrayList<>(0));
+
+        if (staticKnowledgeIndexVO.getTypes().contains(0) ||
+                staticKnowledgeIndexVO.getTypes().contains(11) ||
+                staticKnowledgeIndexVO.getTypes().isEmpty()) {
+            caseDTO = cdssCoreClient.classicCaseIndex(staticKnowledgeIndexVO);
+            if (staticKnowledgeIndexVO.getTypes().contains(11) && staticKnowledgeIndexVO.getTypes().size() > 1)
+                staticKnowledgeIndexVO.getTypes().remove(staticKnowledgeIndexVO.getTypes().indexOf(11));
+        }
+        if (!staticKnowledgeIndexVO.getTypes().contains(11))
+            respDTO = cdssCoreClient.staticKnowledgeIndex(staticKnowledgeIndexVO);
+
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            retList = respDTO.data;
+            if (RespDTOUtil.respIsOK(caseDTO)) {
+                for (ClassicCaseIndexDTO classicCase : caseDTO.data) {
+                    StaticKnowledgeIndexDTO dto = new StaticKnowledgeIndexDTO();
+                    BeanUtil.copyProperties(classicCase, dto);
+                    retList.add(dto);
+                }
+            }
+        } else {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, respDTO.msg);
+        }
+
+        if (staticKnowledgeIndexVO.getHasInfo() != null && staticKnowledgeIndexVO.getHasInfo().equals(1)) {
+            retList = retList.stream().filter(i -> i.getStatus().equals(1)).collect(Collectors.toList());
+        }
+        return retList;
+    }
+
+    /**
+     * 经典病例检索
+     *
+     * @param staticKnowledgeIndexVO
+     * @return
+     */
+    public List<ClassicCaseIndexDTO> classicCaseIndex(StaticKnowledgeIndexVO staticKnowledgeIndexVO) {
+        List<ClassicCaseIndexDTO> retList = Lists.newLinkedList();
 
-        RespDTO<List<StaticKnowledgeIndexDTO>> respDTO = cdssCoreClient.staticKnowledgeIndex(staticKnowledgeIndexVO);
+        RespDTO<List<ClassicCaseIndexDTO>> respDTO = cdssCoreClient.classicCaseIndex(staticKnowledgeIndexVO);
         if (RespDTOUtil.respIsOK(respDTO)) {
             retList = respDTO.data;
         } else {
@@ -103,7 +134,13 @@ public class KlConceptStaticFacade {
             scaleStaticAllVO.setHospitalId(-1L);
         }
         BeanUtil.copyProperties(staticKnowledgeVO, scaleStaticAllVO);
-        RespDTO<StaticKnowledgeDTO> respDTO = cdssCoreClient.getStaticKnowledge(scaleStaticAllVO);
+//        RespDTO<StaticKnowledgeDTO> respDTO = cdssCoreClient.getStaticKnowledge(scaleStaticAllVO);
+        RespDTO<StaticKnowledgeDTO> respDTO;
+        if (staticKnowledgeVO.getType().equals(11))
+            respDTO = cdssCoreClient.getClassicCaseInfo(scaleStaticAllVO);
+        else
+            respDTO = cdssCoreClient.getStaticKnowledge(scaleStaticAllVO);
+
         if (RespDTOUtil.respIsOK(respDTO)) {
             StaticKnowledgeDTO staticKnowledgeDTO = respDTO.data;
             return staticKnowledgeDTO;
@@ -203,6 +240,40 @@ public class KlConceptStaticFacade {
         return page;
     }
 
+    /**
+     * 经典病例分页查询
+     *
+     * @param klClassicCasePageVO
+     * @return
+     */
+    public IPage<KlClassicCaseDTO> getClassicCase(KlClassicCasePageVO klClassicCasePageVO) {
+        Page<KlClassicCaseDTO> page = null;
+        RespDTO<Page<KlClassicCaseDTO>> respDTO = cdssCoreClient.getClassicCase(klClassicCasePageVO);
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            page = respDTO.data;
+        } else {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, respDTO.msg);
+        }
+        List<KlClassicCaseDTO> records = page.getRecords();
+        List<String> userIds = records.stream().map(KlClassicCaseDTO::getModifier)
+                .distinct()
+                .collect(Collectors.toList());
+        RespDTO<Map<String, String>> userRespDTO = RespDTO.onSuc(sysUserFacade.getUserInfoByIds(userIds));
+        if (RespDTOUtil.respIsNG(userRespDTO)) {
+            return page;
+        }
+        Map<String, String> userMap = userRespDTO.data;
+        records.forEach(record -> {
+            if (userMap.containsKey(record.getModifier())) {
+                record.setModifier(userMap.get(record.getModifier()));
+            } else {
+                record.setModifier("");
+            }
+        });
+        page.setRecords(records);
+        return page;
+    }
+
     /**
      * 分页查询
      *
@@ -241,6 +312,47 @@ public class KlConceptStaticFacade {
         return success;
     }
 
+
+    /**
+     * 经典病例启用禁用
+     *
+     * @param changeStatusVO
+     * @return
+     */
+    public Boolean changeCaseStatus(ChangeStatusVO changeStatusVO) {
+        String userId = UserUtils.getCurrentPrincipleID();
+        changeStatusVO.setUserId(Long.valueOf(userId));
+
+        Boolean success = false;
+        RespDTO<Boolean> respDTO = cdssCoreClient.changeCaseStatus(changeStatusVO);
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            success = respDTO.data;
+        } else {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, respDTO.msg);
+        }
+        return success;
+    }
+
+    /**
+     * 保存病例(新增or修改)
+     *
+     * @param klClassicCaseVO
+     * @return
+     */
+    public Boolean saveOrUpdateCase(KlClassicCaseVO klClassicCaseVO) {
+        String userId = UserUtils.getCurrentPrincipleID();
+        klClassicCaseVO.setUserId(Long.valueOf(userId));
+
+        Boolean success = false;
+        RespDTO<Boolean> respDTO = cdssCoreClient.saveOrUpdateCase(klClassicCaseVO);
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            success = respDTO.data;
+        } else {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, respDTO.msg);
+        }
+        return success;
+    }
+
     /**
      * 启用禁用
      *
@@ -278,6 +390,23 @@ public class KlConceptStaticFacade {
         return klConceptStaticDTO;
     }
 
+    /**
+     * 根据经典病例id获取病例信息
+     *
+     * @param idVO
+     * @return
+     */
+    public KlClassicCaseDTO getCaseById(IdVO idVO) {
+        KlClassicCaseDTO klClassicCaseDTO = new KlClassicCaseDTO();
+        RespDTO<KlClassicCaseDTO> respDTO = cdssCoreClient.getCaseById(idVO);
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            klClassicCaseDTO = respDTO.data;
+        } else {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, respDTO.msg);
+        }
+        return klClassicCaseDTO;
+    }
+
     /**
      * 是否已存在
      *

+ 23 - 0
src/main/java/com/diagbot/facade/PushFacade.java

@@ -174,6 +174,9 @@ public class PushFacade {
         if (ListUtil.isNotEmpty(pushDTO.getNurse())) {
             conceptBaseList.addAll(pushDTO.getNurse());
         }
+        if (ListUtil.isNotEmpty(pushDTO.getClassicCase())) {
+            conceptBaseList.addAll(pushDTO.getClassicCase());
+        }
         if (ListUtil.isNotEmpty(conceptBaseList)) {
             conceptNameList = conceptBaseList.stream()
                     .map(i -> i.getName())
@@ -200,6 +203,18 @@ public class PushFacade {
                     }
                 }
             }
+            if (pushDTO.getMedicine() != null) {
+                for (Map.Entry<String, List<PushBaseDTO>> entry : pushDTO.getMedicine().entrySet()) {
+                    if (ListUtil.isNotEmpty(entry.getValue())) {
+                        entry.getValue().forEach(item -> {
+                            item.setType(2);
+                            if (conceptDetailMap.containsKey(item.getName() + "_" + dicStaticTypeValNameMap.get("2"))) {
+                                item.setHasInfo(1);
+                            }
+                        });
+                    }
+                }
+            }
             if (ListUtil.isNotEmpty(pushDTO.getLis())) {
                 pushDTO.getLis().forEach(item -> {
                     item.setType(3);
@@ -248,6 +263,14 @@ public class PushFacade {
                     }
                 });
             }
+            if (ListUtil.isNotEmpty(pushDTO.getClassicCase())) {
+                pushDTO.getClassicCase().forEach(item -> {
+                    item.setType(11);
+                    if (conceptDetailMap.containsKey(item.getName() + "_" + dicStaticTypeValNameMap.get("11"))) {
+                        item.setHasInfo(1);
+                    }
+                });
+            }
         }
 
         //量表

+ 23 - 0
src/main/java/com/diagbot/facade/SysUserFacade.java

@@ -32,8 +32,10 @@ import org.springframework.security.oauth2.common.OAuth2AccessToken;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 用户业务层
@@ -266,4 +268,25 @@ public class SysUserFacade extends SysUserServiceImpl {
         return res;
     }
 
+    /**
+     * 根据用户ID列表获取用户数据
+     *
+     * @param ids 用户ID列表
+     * @return 用户名信息列表
+     */
+    public Map<String, String> getUserInfoByIds(List<String> ids) {
+        List<Long> longList
+                = ids.stream().map(r -> Long.valueOf(r)).distinct().collect(Collectors.toList());
+
+        Map<String, String> map = new HashMap<>();
+        if (ListUtil.isNotEmpty(longList)) {
+            List<SysUser> userList = this.getByIds(longList);
+            if (ListUtil.isNotEmpty(userList)) {
+                map = userList.stream()
+                        .collect(Collectors.toMap(k -> k.getId().toString(), v -> v.getLinkman()));
+            }
+        }
+        return map;
+    }
+
 }

+ 4 - 0
src/main/java/com/diagbot/mapper/SysUserMapper.java

@@ -3,6 +3,8 @@ package com.diagbot.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.diagbot.entity.SysUser;
 
+import java.util.List;
+
 /**
  * <p>
  * 系统用户表 Mapper 接口
@@ -12,4 +14,6 @@ import com.diagbot.entity.SysUser;
  * @since 2020-04-09
  */
 public interface SysUserMapper extends BaseMapper<SysUser> {
+
+    public List<SysUser> getByIds(List<Long> ids);
 }

+ 5 - 0
src/main/java/com/diagbot/service/SysUserService.java

@@ -3,6 +3,8 @@ package com.diagbot.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.entity.SysUser;
 
+import java.util.List;
+
 /**
  * <p>
  * 系统用户表 服务类
@@ -12,4 +14,7 @@ import com.diagbot.entity.SysUser;
  * @since 2020-04-09
  */
 public interface SysUserService extends IService<SysUser> {
+
+    public List<SysUser> getByIds(List<Long> ids);
+
 }

+ 6 - 0
src/main/java/com/diagbot/service/impl/SysUserServiceImpl.java

@@ -6,6 +6,8 @@ import com.diagbot.mapper.SysUserMapper;
 import com.diagbot.service.SysUserService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 系统用户表 服务实现类
@@ -16,4 +18,8 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
+    @Override
+    public List<SysUser> getByIds(List<Long> ids) {
+        return baseMapper.getByIds(ids);
+    }
 }

+ 1 - 1
src/main/java/com/diagbot/vo/ConceptDetailVO.java

@@ -41,7 +41,7 @@ public class ConceptDetailVO {
     private Integer orderNo;
 
     /**
-     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案
+     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案,5-诊疗指南
      */
     private String contentType;
 }

+ 33 - 0
src/main/java/com/diagbot/vo/KlClassicCasePageVO.java

@@ -0,0 +1,33 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/2/24 13:41
+ */
+@Getter
+@Setter
+public class KlClassicCasePageVO extends Page {
+    /**
+     * 标准术语
+     */
+    private String name;
+    /**
+     * 术语类型
+     */
+    private Integer type;
+    /**
+     * 术语类型
+     */
+    @ApiModelProperty(hidden = true)
+    private String typeName;
+    /**
+     * 启用状态
+     */
+    private Integer status;
+}

+ 71 - 0
src/main/java/com/diagbot/vo/KlClassicCaseVO.java

@@ -0,0 +1,71 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/2/24 15:03
+ */
+@Getter
+@Setter
+public class KlClassicCaseVO {
+    private Long id;
+    /**
+     * 标准术语
+     */
+    private String name;
+    /**
+     * 术语类型
+     */
+    private Integer type;
+    /**
+     * 术语类型
+     */
+    @ApiModelProperty(hidden = true)
+    private String typeName;
+    /**
+     * 临床路径名称
+     */
+    private String clinicalPathwayName;
+
+    /**
+     * 注意事项名称
+     */
+    private String noticeName;
+
+    /**
+     * 经典病例明细
+     */
+    private List<KlConceptDetailVO> details;
+
+    /**
+     * 操作id
+     */
+    @ApiModelProperty(hidden = true)
+    private Long userId;
+
+    /**
+     * 数据来源:0-医院端、1-云平台,默认0
+     */
+    private Integer source = 0;
+
+    /**
+     * 年龄
+     */
+    private Integer age;
+
+    /**
+     * 性别
+     */
+    private String sex;
+
+    /**
+     * 科室
+     */
+    private String dept;
+}

+ 1 - 1
src/main/java/com/diagbot/vo/ScaleStaticAllVO.java

@@ -24,7 +24,7 @@ public class ScaleStaticAllVO extends ScaleVO{
     @NotNull(message = "请输入术语类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作")
     private Integer type;
     /**
-     * 内容类型:1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案
+     * 内容类型:1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案,5-诊疗指南
      */
     private List<Integer> contentTypes;
 

+ 1 - 1
src/main/java/com/diagbot/vo/StaticKnowledgeVO.java

@@ -25,7 +25,7 @@ public class StaticKnowledgeVO {
     @NotNull(message = "请输入术语类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作")
     private Integer type;
     /**
-     * 内容类型:1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案
+     * 内容类型:1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案,5-诊疗指南
      */
     private List<Integer> contentTypes;
 

+ 63 - 17
src/main/java/com/diagbot/web/ConceptInfoController.java

@@ -4,6 +4,8 @@ import java.util.List;
 
 import javax.validation.Valid;
 
+import com.diagbot.dto.*;
+import com.diagbot.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -13,22 +15,8 @@ import org.springframework.web.bind.annotation.RestController;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
-import com.diagbot.dto.KlConceptStaticDTO;
-import com.diagbot.dto.RespDTO;
-import com.diagbot.dto.StaticKnowledgeDTO;
-import com.diagbot.dto.StaticKnowledgeHISDTO;
-import com.diagbot.dto.StaticKnowledgeIndexDTO;
-import com.diagbot.dto.StaticKnowledgeIndexPageDTO;
 import com.diagbot.facade.ConceptInfoFacade;
 import com.diagbot.facade.KlConceptStaticFacade;
-import com.diagbot.vo.ChangeStatusVO;
-import com.diagbot.vo.IdVO;
-import com.diagbot.vo.KlConceptStaticPageVO;
-import com.diagbot.vo.KlConceptStaticVO;
-import com.diagbot.vo.StaticKnowledgeHISVO;
-import com.diagbot.vo.StaticKnowledgeIndexPageVO;
-import com.diagbot.vo.StaticKnowledgeIndexVO;
-import com.diagbot.vo.StaticKnowledgeVO;
 
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -76,8 +64,19 @@ public class ConceptInfoController {
 		return RespDTO.onSuc(data);
 	}
 
+	@ApiOperation(value = "医学术语检索-新增经典病例",
+			notes = "types: 类型:11-经典病例 <br>" +
+					"inputStr: 检索内容<br>")
+	@PostMapping("/classicCaseIndexWithoutInfo")
+	@SysLogger("classicCaseIndexWithoutInfo")
+	public RespDTO<List<ClassicCaseIndexDTO>> classicCaseIndexWithoutInfo(@Valid @RequestBody StaticKnowledgeIndexVO staticKnowledgeIndexVO) {
+		staticKnowledgeIndexVO.setHasInfo(0);
+		List<ClassicCaseIndexDTO> data = klConceptStaticFacade.classicCaseIndex(staticKnowledgeIndexVO);
+		return RespDTO.onSuc(data);
+	}
+
 	@ApiOperation(value = "页面获取静态知识[zhaops]", notes = "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作、8-量表、9-护理、10-政策法规 <br>"
-			+ "contentTypes: 内容类型(多选):1-静态信息、2-注意事项、3-临床路径、4-治疗方案<br>" + "name: 标准术语名称<br>")
+			+ "contentTypes: 内容类型(多选):1-静态信息、2-注意事项、3-临床路径、4-治疗方案、5-诊疗指南<br>" + "name: 标准术语名称<br>")
 	@PostMapping("/getStaticKnowledge")
 	@SysLogger("getStaticKnowledge")
 	public RespDTO<StaticKnowledgeDTO> getStaticKnowledge(@Valid @RequestBody StaticKnowledgeVO staticKnowledgeVO) {
@@ -86,7 +85,7 @@ public class ConceptInfoController {
 	}
 
 	@ApiOperation(value = "对接获取静态知识[zhaops]", notes = "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、7-手术和操作、8-量表、9-护理、10-政策法规 <br>"
-			+ "contentTypes: 内容类型(多选):1-静态信息、2-注意事项、3-临床路径、4-治疗方案 <br>" + "hisName: HIS大项名称<br>"
+			+ "contentTypes: 内容类型(多选):1-静态信息、2-注意事项、3-临床路径、4-治疗方案、5-诊疗指南 <br>" + "hisName: HIS大项名称<br>"
 			+ "hisDetailName: HIS小项名称<br>")
 	@PostMapping("/getStaticKnowledgeForHIS")
 	@SysLogger("getStaticKnowledgeForHIS")
@@ -97,7 +96,7 @@ public class ConceptInfoController {
 	}
 
 	@ApiOperation(value = "对接获取静态知识-判断是否有静态知识[zhaops]", notes = "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、7-手术和操作、8-量表、9-护理、10-政策法规 <br>"
-			+ "contentTypes: 内容类型(多选):1-静态信息、2-注意事项、3-临床路径、4-治疗方案 <br>" + "hisName: HIS大项名称<br>"
+			+ "contentTypes: 内容类型(多选):1-静态信息、2-注意事项、3-临床路径、4-治疗方案、5-诊疗指南 <br>" + "hisName: HIS大项名称<br>"
 			+ "hisDetailName: HIS小项名称<br>")
 	@PostMapping("/isExistForHIS")
 	@SysLogger("isExistForHIS")
@@ -115,6 +114,17 @@ public class ConceptInfoController {
 		return RespDTO.onSuc(data);
 	}
 
+	@ApiOperation(value = "获取经典病例列表",
+			notes = "type: 类型:11-经典病例 <br>" +
+					"name: 术语名称<br>" +
+					"status: 启用状态:1-启用、0-禁用<br>")
+	@PostMapping("/getClassicCase")
+	@SysLogger("getClassicCase")
+	public RespDTO<IPage<KlClassicCaseDTO>> getClassicCase(@Valid @RequestBody KlClassicCasePageVO klClassicCasePageVO) {
+		IPage<KlClassicCaseDTO> data = klConceptStaticFacade.getClassicCase(klClassicCasePageVO);
+		return RespDTO.onSuc(data);
+	}
+
 	@ApiOperation(value = "静态知识检索(分页返回)[zhaops]", notes = "types: 类型(多选):0-全部、1-诊断、2-药品、3-检验、5-检查、6-手术和操作、8-量表、9-护理、10-政策法规 <br>"
 			+ "inputStr: 检索内容<br>")
 	@PostMapping("/staticIndexPage")
@@ -136,6 +146,22 @@ public class ConceptInfoController {
 		return RespDTO.onSuc(data);
 	}
 
+	@ApiOperation(value = "保存经典病例-新增或修改",
+			notes = "id: id <br>" +
+					"name: 术语名称 <br>" +
+					"type: 类型:11-经典病例  <br>" +
+					"source:数据来源:0-医院端、1-云平台,默认0 <br>" +
+					"details: 明细<br>" +
+					"scale:评估量表<br>")
+	@PostMapping("/saveOrUpdateCase")
+	@SysLogger("saveOrUpdateCase")
+	@Transactional
+	public RespDTO<Boolean> saveOrUpdateCase(@Valid @RequestBody KlClassicCaseVO klClassicCaseVO) {
+		Boolean data = klConceptStaticFacade.saveOrUpdateCase(klClassicCaseVO);
+		return RespDTO.onSuc(data);
+	}
+
+
 	@ApiOperation(value = "静态知识启用禁用[zhaops]", notes = "id: 术语id <br>" + "status: 启用状态(0:禁用,1:启用)<br>")
 	@PostMapping("/changeStatus")
 	@SysLogger("changeStatus")
@@ -145,6 +171,17 @@ public class ConceptInfoController {
 		return RespDTO.onSuc(data);
 	}
 
+	@ApiOperation(value = "经典病例启用禁用",
+			notes = "id: 术语id <br>" +
+					"status: 启用状态:1-启用、0-禁用<br>")
+	@PostMapping("/changeCaseStatus")
+	@SysLogger("changeCaseStatus")
+	@Transactional
+	public RespDTO<Boolean> changeCaseStatus(@Valid @RequestBody ChangeStatusVO changeStatusVO) {
+		Boolean data = klConceptStaticFacade.changeCaseStatus(changeStatusVO);
+		return RespDTO.onSuc(data);
+	}
+
 	@ApiOperation(value = "静态知识是否存在[zhaops]", notes = "name: 术语名称 <br>"
 			+ "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作、8-量表、9-护理、10-政策法规 <br>")
 	@PostMapping("/isExist")
@@ -162,6 +199,15 @@ public class ConceptInfoController {
 		return RespDTO.onSuc(data);
 	}
 
+	@ApiOperation(value = "根据病例id获取病例信息",
+			notes = "id: 病例id <br>")
+	@PostMapping("/getCaseById")
+	@SysLogger("getCaseById")
+	public RespDTO<KlClassicCaseDTO> getCaseById(@Valid @RequestBody IdVO idVO) {
+		KlClassicCaseDTO data = klConceptStaticFacade.getCaseById(idVO);
+		return RespDTO.onSuc(data);
+	}
+
 	@ApiOperation(value = "批量更新静态知识标志[zhaops]", notes = "")
 	@PostMapping("/updateHasInfoStatusBatch")
 	@SysLogger("updateHasInfoStatusBatch")

+ 1 - 1
src/main/java/com/diagbot/web/PushController.java

@@ -35,7 +35,7 @@ public class PushController {
 
     @ApiOperation(value = "基础推理[by:zhaops]",
             notes = "featureType 类型(多选必填),1:症状,4:查体结果,5:检验,6:检查," +
-                    "7:诊断,8:药品,9:手术,10:一般治疗, 12:量表,13:护理" +
+                    "7:诊断,8:药品,9:手术,10:一般治疗, 12:量表,13:护理,14:经典病例" +
                     "<br>注意:11:管理评估,22:指标推送 这2个类型原5.0系统已占" +
                     "<br>getStaticKnowledge 是否获取静态知识 0:不获取,1:获取")
     @PostMapping("/push")

+ 6 - 6
src/main/resources/application-dev.yml

@@ -54,7 +54,7 @@ spring:
     druid:
       driver-class-name: com.mysql.cj.jdbc.Driver
       platform: mysql
-      url: jdbc:mysql://192.168.2.31:3306/cdss?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      url: jdbc:mysql://173.18.12.191:3306/cdss?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
       username: root
       password: dsYun8!@#
       # 连接池的配置信息
@@ -69,7 +69,7 @@ spring:
       # 配置一个连接在池中最小生存的时间,单位是毫秒
       minEvictableIdleTimeMillis: 300000
       validationQuery: SELECT 1 FROM DUAL
-      testWhileIdle: true
+      estWhileIdle: true
       testOnBorrow: false
       testOnReturn: false
       # 打开PSCache,并且指定每个连接上PSCache的大小
@@ -107,7 +107,7 @@ spring:
       cache: 15 # cache索引
       token: 15 # Token索引
       mr: 15 # 病历索引
-    host: 192.168.2.31  #Redis服务器地址
+    host: 173.18.12.191  #Redis服务器地址
     port: 6379 # Redis服务器连接端口(本地环境端口6378,其他环境端口是6379)
     password:  # Redis服务器连接密码(默认为空)
     lettuce:
@@ -162,12 +162,12 @@ swagger:
 
 #图片服务器
 imageUrl:
-  prefix: http://192.168.2.31:82
+  prefix: http://173.18.12.191:82
 
 #病历质控地址
 mrqc:
-  url: http://192.168.2.32:5858
+  url: http://173.18.12.192:5858
 
 #CDSS核心地址
 cdss-core:
-  url: http://192.168.2.32:7010
+  url: http://173.18.12.192:7010

+ 9 - 0
src/main/resources/mapper/SysUserMapper.xml

@@ -17,4 +17,13 @@
         <result column="type" property="type"/>
         <result column="remark" property="remark"/>
     </resultMap>
+
+    <select id="getByIds" resultMap="BaseResultMap">
+        select u.* from sys_user u where u.is_deleted = 'N' and u.status = 1
+        and u.id in
+        <foreach collection="list" item="ids" open="(" close=")" separator=",">
+            #{ids}
+        </foreach>
+    </select>
+
 </mapper>