Browse Source

Merge branch 'master' into his/csxy3

baozaolaoge 4 years ago
parent
commit
7a31074097

+ 5 - 0
_windows/git.xml

@@ -0,0 +1,5 @@
+<application>
+  <component name="Git.Application.Settings">
+    <option name="myPathToGit" value="D:\Git\bin\git.exe" />
+  </component>
+</application>

+ 5 - 0
_windows/keymap.xml

@@ -0,0 +1,5 @@
+<application>
+  <component name="KeymapManager">
+    <active_keymap name="Eclipse" />
+  </component>
+</application>

+ 5 - 0
_windows/laf.xml

@@ -0,0 +1,5 @@
+<application>
+  <component name="LafManager" autodetect="false">
+    <laf class-name="com.intellij.ide.ui.laf.darcula.DarculaLaf" />
+  </component>
+</application>

+ 6 - 0
_windows/path.macros.xml

@@ -0,0 +1,6 @@
+<application>
+  <component name="PathMacrosImpl">
+    <macro name="MAVEN_REPOSITORY" value="C:\Users\yue\.m2\repository" />
+    <macro name="KOTLIN_BUNDLED" value="D:\IntelliJ IDEA 2021.1\plugins\Kotlin\kotlinc" />
+  </component>
+</application>

+ 1 - 0
codestyles/Default.xml

@@ -0,0 +1 @@
+<code_scheme name="Default" version="173" />

+ 5 - 0
colors.scheme.xml

@@ -0,0 +1,5 @@
+<application>
+  <component name="EditorColorsManagerImpl">
+    <global_color_scheme name="Darcula" />
+  </component>
+</application>

+ 3 - 0
databaseDrivers.xml

@@ -0,0 +1,3 @@
+<application>
+  <component name="LocalDatabaseDriverManager" version="201" />
+</application>

+ 100 - 0
debugger.xml

@@ -0,0 +1,100 @@
+<application>
+  <component name="DebuggerSettings">
+    <filter>
+      <option name="PATTERN" value="com.sun.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+    <filter>
+      <option name="PATTERN" value="java.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+    <filter>
+      <option name="PATTERN" value="javax.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+    <filter>
+      <option name="PATTERN" value="org.omg.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+    <filter>
+      <option name="PATTERN" value="sun.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+    <filter>
+      <option name="PATTERN" value="jdk.internal.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+    <filter>
+      <option name="PATTERN" value="junit.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+    <filter>
+      <option name="PATTERN" value="org.junit.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+    <filter>
+      <option name="PATTERN" value="com.intellij.rt.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+    <filter>
+      <option name="PATTERN" value="com.yourkit.runtime.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+    <filter>
+      <option name="PATTERN" value="com.springsource.loaded.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+    <filter>
+      <option name="PATTERN" value="org.springsource.loaded.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+    <filter>
+      <option name="PATTERN" value="javassist.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+    <filter>
+      <option name="PATTERN" value="org.apache.webbeans.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+    <filter>
+      <option name="PATTERN" value="com.ibm.ws.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+    <filter>
+      <option name="PATTERN" value="org.mockito.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+    <filter>
+      <option name="PATTERN" value="kotlin.*" />
+      <option name="ENABLED" value="true" />
+      <option name="INCLUDE" value="true" />
+    </filter>
+  </component>
+  <component name="XDebuggerSettings">
+    <data-views />
+    <general />
+    <debuggers>
+      <debugger id="javascript">
+        <configuration>
+          <custom-object-presentation />
+        </configuration>
+      </debugger>
+    </debuggers>
+  </component>
+</application>

+ 31 - 29
doc/002.20210629术语关联改版/cdss_init.sql

@@ -33,32 +33,34 @@ SET FOREIGN_KEY_CHECKS = 0;
 -- ----------------------------
 -- Table structure for tran_mapping_config
 -- ----------------------------
-DROP TABLE IF EXISTS `tran_mapping_config`;
-CREATE TABLE `tran_mapping_config`  (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
-  `is_deleted` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
-  `gmt_create` datetime(0) NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录创建时间',
-  `gmt_modified` datetime(0) NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
-  `creator` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '创建人,0表示无创建人值',
-  `modifier` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
-  `hospital_id` bigint(20) NOT NULL COMMENT '医院id',
-  `type` int(4) NOT NULL COMMENT '医学术语类型( 1-检验套餐、2-检验细项、3-辅检、4-诊断、5-药品、6-手术和操作、7-科室、8-输血、10-量表、11-护理、12-中医疾病、13-中医证候、14-麻醉)',
-  `his_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '医院术语名称',
-  `his_code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '医院术语编码',
-  `his_detail_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '医院术语细项名称(检验细项)',
-  `concept_id` bigint(20) NULL DEFAULT NULL COMMENT '医学标准术语id',
-  `form_concept_id` bigint(20) NULL DEFAULT NULL COMMENT '药品剂型id',
-  `is_match` int(4) NOT NULL DEFAULT 0 COMMENT '是否匹配(0-未匹配、1-已匹配)',
-  `source` int(4) NULL DEFAULT NULL COMMENT '数据来源(1-标准词、2-同义词、3-编码、4-历史数据、5-相似词、99-数据迁移)',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
-  PRIMARY KEY (`id`) USING BTREE,
-  INDEX `idx_his_detail_name`(`hospital_id`, `type`, `his_name`, `his_detail_name`) USING BTREE,
-  INDEX `idx_his_name`(`hospital_id`, `type`, `his_name`) USING BTREE,
-  INDEX `idx_concept_id`(`hospital_id`, `concept_id`) USING BTREE,
-  INDEX `idx_hospital_id`(`hospital_id`) USING BTREE,
-  INDEX `idx_detail_name`(`his_name`, `his_detail_name`) USING BTREE,
-  INDEX `idx_deleted_type`(`type`) USING BTREE,
-  INDEX `idx_type`(`hospital_id`, `type`, `is_deleted`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 797881 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '医学术语映射表' ROW_FORMAT = Dynamic;
-
-SET FOREIGN_KEY_CHECKS = 1;
+-- 已执行脚本
+-- DROP TABLE IF EXISTS `tran_mapping_config`;
+-- CREATE TABLE `tran_mapping_config`  (
+--   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+--   `is_deleted` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
+--   `gmt_create` datetime(0) NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录创建时间',
+--   `gmt_modified` datetime(0) NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
+--   `creator` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '创建人,0表示无创建人值',
+--   `modifier` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
+--   `hospital_id` bigint(20) NOT NULL COMMENT '医院id',
+--   `type` int(4) NOT NULL COMMENT '医学术语类型( 1-检验套餐、2-检验细项、3-辅检、4-诊断、5-药品、6-手术和操作、7-科室、8-输血、10-量表、11-护理、12-中医疾病、13-中医证候、14-麻醉)',
+--   `his_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '医院术语名称',
+--   `his_code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '医院术语编码',
+--   `his_detail_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '医院术语细项名称(检验细项)',
+--   `concept_id` bigint(20) NULL DEFAULT NULL COMMENT '医学标准术语id',
+--   `form_concept_id` bigint(20) NULL DEFAULT NULL COMMENT '药品剂型id',
+--   `is_match` int(4) NOT NULL DEFAULT 0 COMMENT '是否匹配(0-未匹配、1-已匹配)',
+--   `source` int(4) NULL DEFAULT NULL COMMENT '数据来源(1-标准词、2-同义词、3-编码、4-历史数据、5-相似词、99-数据迁移)',
+--   `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
+--   PRIMARY KEY (`id`) USING BTREE,
+--   INDEX `idx_his_detail_name`(`hospital_id`, `type`, `his_name`, `his_detail_name`) USING BTREE,
+--   INDEX `idx_his_name`(`hospital_id`, `type`, `his_name`) USING BTREE,
+--   INDEX `idx_concept_id`(`hospital_id`, `concept_id`) USING BTREE,
+--   INDEX `idx_hospital_id`(`hospital_id`) USING BTREE,
+--   INDEX `idx_detail_name`(`his_name`, `his_detail_name`) USING BTREE,
+--   INDEX `idx_deleted_type`(`type`) USING BTREE,
+--   INDEX `idx_type`(`hospital_id`, `type`, `is_deleted`) USING BTREE
+-- ) ENGINE = InnoDB AUTO_INCREMENT = 797881 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '医学术语映射表' ROW_FORMAT = Dynamic;
+--
+-- SET FOREIGN_KEY_CHECKS = 1;
+--

+ 9 - 0
filetypes.xml

@@ -0,0 +1,9 @@
+<application>
+  <component name="FileTypeManager" version="18">
+    <extensionMap>
+      <mapping ext="space.kts" type="Kotlin" />
+      <mapping ext="gradle.kts" type="Kotlin" />
+      <mapping ext="main.kts" type="Kotlin" />
+    </extensionMap>
+  </component>
+</application>

+ 9 - 0
find.xml

@@ -0,0 +1,9 @@
+<application>
+  <component name="FindSettings">
+    <option name="customScope" value="All Places" />
+    <option name="defaultScopeName" value="All Places" />
+    <option name="skipResultsWithOneUsage" value="true" />
+    <option name="SKIP_RESULTS_WHEN_ONE_USAGE" value="true" />
+    <option name="SEARCH_SCOPE" value="All Places" />
+  </component>
+</application>

+ 5 - 0
ide-features-trainer.xml

@@ -0,0 +1,5 @@
+<application>
+  <component name="LangManager">
+    <option name="languageName" value="JAVA" />
+  </component>
+</application>

+ 54 - 0
jdk.table.xml

@@ -0,0 +1,54 @@
+<application>
+  <component name="ProjectJdkTable">
+    <jdk version="2">
+      <name value="1.8" />
+      <type value="JavaSDK" />
+      <version value="version 1.8.0_181" />
+      <homePath value="C:/Program Files/Java/jdk1.8.0_181" />
+      <roots>
+        <annotationsPath>
+          <root type="composite">
+            <root url="jar://$APPLICATION_HOME_DIR$/plugins/java/lib/jdkAnnotations.jar!/" type="simple" />
+          </root>
+        </annotationsPath>
+        <classPath>
+          <root type="composite">
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/charsets.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/deploy.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/ext/access-bridge-64.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/ext/cldrdata.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/ext/dnsns.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/ext/jaccess.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/ext/jfxrt.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/ext/localedata.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/ext/nashorn.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/ext/sunec.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/ext/sunjce_provider.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/ext/sunmscapi.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/ext/sunpkcs11.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/ext/zipfs.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/javaws.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/jce.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/jfr.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/jfxswt.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/jsse.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/management-agent.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/plugin.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/resources.jar!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/jre/lib/rt.jar!/" type="simple" />
+          </root>
+        </classPath>
+        <javadocPath>
+          <root type="composite" />
+        </javadocPath>
+        <sourcePath>
+          <root type="composite">
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/src.zip!/" type="simple" />
+            <root url="jar://C:/Program Files/Java/jdk1.8.0_181/javafx-src.zip!/" type="simple" />
+          </root>
+        </sourcePath>
+      </roots>
+      <additional />
+    </jdk>
+  </component>
+</application>

+ 3 - 0
mybatis.xml

@@ -0,0 +1,3 @@
+<application>
+  <component name="MybatisSettings" InsertGenerator="[&quot;add&quot;,&quot;insert&quot;,&quot;new&quot;]" DeleteGenerator="[&quot;cancel&quot;,&quot;del&quot;]" UpdateGenerator="[&quot;update&quot;,&quot;modify&quot;,&quot;set&quot;]" SelectGenerator="[&quot;search&quot;,&quot;select&quot;,&quot;find&quot;,&quot;get&quot;,&quot;query&quot;,&quot;count&quot;,&quot;list&quot;,&quot;look&quot;]" statementGenerateModel="0" />
+</application>

+ 8 - 0
shared-indexes.xml

@@ -0,0 +1,8 @@
+<application>
+  <component name="download-consent">
+    <option name="consentItems">
+      <item download="ALLOWED" kind="jdk" url="https://index-cdn.jetbrains.com/v2/jdk" />
+      <item download="ALLOWED" kind="mvn" url="https://index-cdn.jetbrains.com/v2/mvn" />
+    </option>
+  </component>
+</application>

+ 4 - 3
src/main/java/com/diagbot/aggregate/AssembleAggregate.java

@@ -7,6 +7,7 @@ import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.facade.MappingConfigFacade;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.ReflectUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.Drug;
 import com.diagbot.vo.ItemExt;
@@ -388,13 +389,13 @@ public class AssembleAggregate {
 
         try {
             for (T item : list) {
-                String name = item.getClass().getMethod("getName").invoke(item).toString();
+                String name = ReflectUtil.getProperty(item, "name");
                 if (StringUtil.isBlank(name)) {
                     retList.add(item);
                     continue;
                 }
 
-                String uniqueName = item.getClass().getMethod("getUniqueName").invoke(item).toString();
+                String uniqueName = ReflectUtil.getProperty(item, "uniqueName");
                 if (StringUtil.isNotBlank(uniqueName)) {
                     retList.add(item);
                     continue;
@@ -402,7 +403,7 @@ public class AssembleAggregate {
 
                 String hisDetailName = "";
                 if(type.equals(ConceptTypeEnum.LisPack.getKey())) {
-                    hisDetailName = item.getClass().getMethod("getDetailName").invoke(item).toString();
+                    hisDetailName = ReflectUtil.getProperty(item, "detailName");
                     if (StringUtil.isBlank(hisDetailName)) {
                         hisDetailName = "";
                     }

+ 1 - 0
src/main/java/com/diagbot/dto/KlRuleByIdSubDTO.java

@@ -28,4 +28,5 @@ public class KlRuleByIdSubDTO {
     private String subEqOperator;//等于域比较符
     private String subEqValue;//等于域值
     private String subEqUnit;//等于域单位
+    private String subMsg;
 }

+ 1 - 1
src/main/java/com/diagbot/facade/PushFacade.java

@@ -186,7 +186,7 @@ public class PushFacade {
             if (RespDTOUtil.respIsNG(respDTO)) {
                 return pushDTO;
             }
-            //1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作、8-量表、9-护理、10-法律法规
+            //1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作、8-量表、9-护理、10-政策法规
             Map<String, List<ConceptDetailDTO>> conceptDetailMap = respDTO.data;
             if (pushDTO.getDis() != null) {
                 for (Map.Entry<String, List<PushBaseDTO>> entry : pushDTO.getDis().entrySet()) {

+ 144 - 0
src/main/java/com/diagbot/util/ReflectUtil.java

@@ -0,0 +1,144 @@
+package com.diagbot.util;
+
+import com.google.common.collect.Lists;
+
+import java.lang.reflect.Field;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+/**
+ * @description: 反射工具类
+ * @author: zhoutg
+ * @date: 2021/4/27 13:29
+ */
+public class ReflectUtil {
+
+    /**
+     * 获取属性对应的值,以list形式返回
+     *
+     * @param list
+     * @param propertyName
+     * @param <T>
+     * @param <V>
+     * @return
+     */
+    public static <T, V> List<V> getPropertyList(List<T> list, String propertyName) {
+        List<V> res = Lists.newArrayList();
+        if (ListUtil.isEmpty(list)) {
+            return res;
+        }
+        for (T t : list) {
+            try {
+                V val = getProperty(t, propertyName);
+                if (val != null) {
+                    // 字符串类型不为空判断
+                    if (StringUtil.isNotBlank(String.valueOf(val))) {
+                        res.add(val);
+                    }
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return res;
+    }
+
+    /**
+     * 循环向上转型, 获取对象的 DeclaredField
+     *
+     * @param object    : 子类对象
+     * @param fieldName : 父类中的属性名
+     * @return 父类中的属性对象
+     */
+    public static Field getDeclaredField(Object object, String fieldName) {
+        Field field = null;
+        Class<?> clazz = object.getClass();
+        for (; clazz != Object.class; clazz = clazz.getSuperclass()) {
+            try {
+                field = clazz.getDeclaredField(fieldName);
+                return field;
+            } catch (Exception e) {
+                //这里甚么都不要做!并且这里的异常必须这样写,不能抛出去。
+                //如果这里的异常打印或者往外抛,则就不会执行clazz = clazz.getSuperclass(),最后就不会进入到父类中了
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 获取对象的属性值,直接使用getDeclaredFields()方法只能获取当前类声明的字段,需要递归向上获取
+     *
+     * @param object    : 子类对象
+     * @param fieldName : 父类中的属性名
+     * @return : 父类中的属性值
+     */
+    public static <T> T getProperty(Object object, String fieldName) {
+        try {
+            //根据 对象和属性名通过反射获取Field对象
+            Field field = getDeclaredField(object, fieldName);
+            // 容错处理
+            if (field == null) {
+                return null;
+            }
+            //抑制Java对其的检查
+            field.setAccessible(true);
+            //获取 object 中 field 所代表的属性值
+            return (T) field.get(object);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 对象赋值
+     *
+     * @param object
+     * @param property
+     * @param value
+     */
+    public static void setProperty(Object object, String property, Object value) {
+        //根据 对象和属性名通过反射 调用上面的方法获取 Field对象
+        Field field = getDeclaredField(object, property);
+        //抑制Java对其的检查
+        field.setAccessible(true);
+        try {
+            field.set(object, value);
+        } catch (IllegalArgumentException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 根据指定字段按照字符串排序
+     *
+     * @param tList
+     * @param property
+     * @param <T>
+     */
+    public <T> void sort(List<T> tList, String property) {
+        if (ListUtil.isNotEmpty(tList) && tList.size() > 1) {
+            Collections.sort(tList, new Comparator<T>() {
+                @Override
+                public int compare(T o1, T o2) {
+                    String v1 = getProperty(o1, property);
+                    String v2 = getProperty(o2, property);
+                    if (StringUtil.isBlank(v1)) {
+                        return -1;
+                    }
+                    if (StringUtil.isBlank(v2)) {
+                        return 1;
+                    }
+                    return v1.compareTo(v2);
+                }
+            });
+        }
+    }
+
+    public static void main(String[] args) {
+
+    }
+}

+ 1 - 0
src/main/java/com/diagbot/vo/KlRuleInfoSaveSubVO.java

@@ -27,4 +27,5 @@ public class KlRuleInfoSaveSubVO {
     private String subEqOperator;//等于域比较符
     private String subEqValue;//等于域值
     private String subEqUnit;//等于域单位
+    private String subMsg;
 }

+ 8 - 8
src/main/java/com/diagbot/web/ConceptInfoController.java

@@ -53,7 +53,7 @@ public class ConceptInfoController {
     private KlConceptStaticFacade klConceptStaticFacade;
 
     @ApiOperation(value = "医学知识(静态知识)检索[zhaops]",
-            notes = "types: 类型(多选):0-全部、1-诊断、2-药品、3-检验、5-检查、6-手术和操作、8-量表、9-护理、10-法律法规 <br>" +
+            notes = "types: 类型(多选):0-全部、1-诊断、2-药品、3-检验、5-检查、6-手术和操作、8-量表、9-护理、10-政策法规 <br>" +
                     "inputStr: 检索内容<br>")
     @PostMapping("/staticKnowledgeIndex")
     @SysLogger("staticKnowledgeIndex")
@@ -64,7 +64,7 @@ public class ConceptInfoController {
     }
 
     @ApiOperation(value = "医学术语检索-新增静态知识[zhaops]",
-            notes = "types: 类型(多选):0-全部、1-诊断、2-药品、3-检验、5-检查、6-手术和操作、8-量表、9-护理、10-法律法规 <br>" +
+            notes = "types: 类型(多选):0-全部、1-诊断、2-药品、3-检验、5-检查、6-手术和操作、8-量表、9-护理、10-政策法规 <br>" +
                     "inputStr: 检索内容<br>")
     @PostMapping("/staticKnowledgeIndexWithoutInfo")
     @SysLogger("staticKnowledgeIndexWithoutInfo")
@@ -76,7 +76,7 @@ public class ConceptInfoController {
     }
 
     @ApiOperation(value = "页面获取静态知识[zhaops]",
-            notes = "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作、8-量表、9-护理、10-法律法规 <br>" +
+            notes = "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作、8-量表、9-护理、10-政策法规 <br>" +
                     "contentTypes: 内容类型(多选):1-静态信息、2-注意事项、3-临床路径、4-治疗方案<br>" +
                     "name: 标准术语名称<br>")
     @PostMapping("/getStaticKnowledge")
@@ -87,7 +87,7 @@ public class ConceptInfoController {
     }
 
     @ApiOperation(value = "对接获取静态知识[zhaops]",
-            notes = "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、7-手术和操作、8-量表、9-护理、10-法律法规 <br>" +
+            notes = "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、7-手术和操作、8-量表、9-护理、10-政策法规 <br>" +
                     "contentTypes: 内容类型(多选):1-静态信息、2-注意事项、3-临床路径、4-治疗方案 <br>" +
                     "hisName: HIS大项名称<br>" +
                     "hisDetailName: HIS小项名称<br>")
@@ -99,7 +99,7 @@ public class ConceptInfoController {
     }
 
     @ApiOperation(value = "获取静态知识列表[zhaops]",
-            notes = "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作、8-量表、9-护理、10-法律法规 <br>" +
+            notes = "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作、8-量表、9-护理、10-政策法规 <br>" +
                     "name: 术语名称<br>" +
                     "isDeleted: 启用状态:N-启用中、Y-已删除<br>")
     @PostMapping("/getPage")
@@ -111,7 +111,7 @@ public class ConceptInfoController {
     }
 
     @ApiOperation(value = "静态知识检索(分页返回)[zhaops]",
-            notes = "types: 类型(多选):0-全部、1-诊断、2-药品、3-检验、5-检查、6-手术和操作、8-量表、9-护理、10-法律法规 <br>" +
+            notes = "types: 类型(多选):0-全部、1-诊断、2-药品、3-检验、5-检查、6-手术和操作、8-量表、9-护理、10-政策法规 <br>" +
                     "inputStr: 检索内容<br>")
     @PostMapping("/staticIndexPage")
     @SysLogger("staticIndexPage")
@@ -124,7 +124,7 @@ public class ConceptInfoController {
     @ApiOperation(value = "保存静态知识-新增或修改[zhaops]",
             notes = "id: id <br>" +
                     "name: 术语名称 <br>" +
-                    "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作、8-量表、9-护理、10-法律法规 <br>" +
+                    "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作、8-量表、9-护理、10-政策法规 <br>" +
                     "clinicalPathwayName: 临床路径名称<br>" +
                     "noticeName: 注意事项名称<br>" +
                     "details: 明细<br>")
@@ -149,7 +149,7 @@ public class ConceptInfoController {
 
     @ApiOperation(value = "静态知识是否存在[zhaops]",
             notes = "name: 术语名称 <br>" +
-                    "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作、8-量表、9-护理、10-法律法规 <br>")
+                    "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作、8-量表、9-护理、10-政策法规 <br>")
     @PostMapping("/isExist")
     @SysLogger("isExist")
     public RespDTO<Boolean> isExist(@Valid @RequestBody KlConceptStaticVO klConceptStaticVO) {

+ 10 - 0
updates.xml

@@ -0,0 +1,10 @@
+<application>
+  <component name="UpdatesConfigurable">
+    <option name="LAST_BUILD_CHECKED" value="IU-211.6693.111" />
+    <option name="LAST_TIME_CHECKED" value="1628650776263" />
+    <pluginHosts>
+      <item value="https://plugins.zhile.io" />
+    </pluginHosts>
+    <option name="THIRD_PARTY_PLUGINS_ALLOWED" value="true" />
+  </component>
+</application>

+ 54 - 0
vcs.xml

@@ -0,0 +1,54 @@
+<application>
+  <component name="GitRememberedInputs">
+    <option name="visitedUrls">
+      <list>
+        <UrlAndUserName>
+          <option name="url" value="http://192.168.2.236:10080" />
+          <option name="userName" value="shiyue" />
+        </UrlAndUserName>
+        <UrlAndUserName>
+          <option name="url" value="http://192.168.2.236:10080/gaodm/cdss.git" />
+          <option name="userName" value="" />
+        </UrlAndUserName>
+        <UrlAndUserName>
+          <option name="url" value="http://223.93.170.82:11731" />
+          <option name="userName" value="shiyue" />
+        </UrlAndUserName>
+        <UrlAndUserName>
+          <option name="url" value="http://192.168.2.236:10080/gaodm/diagbotcloud.git" />
+          <option name="userName" value="" />
+        </UrlAndUserName>
+        <UrlAndUserName>
+          <option name="url" value="http://192.168.2.236:10080/zhouna/preliminary.git" />
+          <option name="userName" value="" />
+        </UrlAndUserName>
+        <UrlAndUserName>
+          <option name="url" value="http://192.168.2.236:10080/zhoutg/cdss-core.git" />
+          <option name="userName" value="" />
+        </UrlAndUserName>
+        <UrlAndUserName>
+          <option name="url" value="http://192.168.2.236:10080/gaodm/mrqc-sys.git" />
+          <option name="userName" value="" />
+        </UrlAndUserName>
+        <UrlAndUserName>
+          <option name="url" value="http://192.168.2.236:10080/gaodm/vte.git" />
+          <option name="userName" value="" />
+        </UrlAndUserName>
+      </list>
+    </option>
+    <option name="cloneParentDir" value="E:\朗通医疗\CDSS所需" />
+  </component>
+  <component name="Vcs.Log.App.Settings">
+    <option name="COLUMN_ID_ORDER">
+      <list>
+        <option value="Default.Root" />
+        <option value="Default.Subject" />
+        <option value="Default.Author" />
+        <option value="Default.Date" />
+      </list>
+    </option>
+  </component>
+  <component name="VcsApplicationSettings">
+    <option name="COMMIT_FROM_LOCAL_CHANGES" value="true" />
+  </component>
+</application>

+ 9 - 0
visualizationTool.xml

@@ -0,0 +1,9 @@
+<application>
+  <component name="VisualizationTool">
+    <option name="state">
+      <GlobalState>
+        <option name="firstTimeOpen" value="false" />
+      </GlobalState>
+    </option>
+  </component>
+</application>

+ 105 - 0
web-types-registry.xml

@@ -0,0 +1,105 @@
+<application>
+  <component name="VueWebTypesRegistry">
+    <package name="@web-types/at-nuxt-vue-app">
+      <version value="2.10.0-1" url="https://registry.npmjs.org/@web-types/at-nuxt-vue-app/-/at-nuxt-vue-app-2.10.0-1.tgz" />
+      <version value="2.4.0-1" url="https://registry.npmjs.org/@web-types/at-nuxt-vue-app/-/at-nuxt-vue-app-2.4.0-1.tgz" />
+      <version value="2.0.0-1" url="https://registry.npmjs.org/@web-types/at-nuxt-vue-app/-/at-nuxt-vue-app-2.0.0-1.tgz" />
+    </package>
+    <package name="@web-types/bootstrap-vue">
+      <version value="2.0.0-rc.20.2" url="https://registry.npmjs.org/@web-types/bootstrap-vue/-/bootstrap-vue-2.0.0-rc.20.2.tgz" />
+      <version value="2.0.0-1" url="https://registry.npmjs.org/@web-types/bootstrap-vue/-/bootstrap-vue-2.0.0-1.tgz" />
+      <version value="1.5.0-2" url="https://registry.npmjs.org/@web-types/bootstrap-vue/-/bootstrap-vue-1.5.0-2.tgz" />
+      <version value="1.4.1-1" url="https://registry.npmjs.org/@web-types/bootstrap-vue/-/bootstrap-vue-1.4.1-1.tgz" />
+      <version value="1.4.0-2" url="https://registry.npmjs.org/@web-types/bootstrap-vue/-/bootstrap-vue-1.4.0-2.tgz" />
+      <version value="1.3.0-2" url="https://registry.npmjs.org/@web-types/bootstrap-vue/-/bootstrap-vue-1.3.0-2.tgz" />
+      <version value="1.2.0-2" url="https://registry.npmjs.org/@web-types/bootstrap-vue/-/bootstrap-vue-1.2.0-2.tgz" />
+      <version value="1.1.0-2" url="https://registry.npmjs.org/@web-types/bootstrap-vue/-/bootstrap-vue-1.1.0-2.tgz" />
+      <version value="1.0.2-2" url="https://registry.npmjs.org/@web-types/bootstrap-vue/-/bootstrap-vue-1.0.2-2.tgz" />
+      <version value="1.0.1-2" url="https://registry.npmjs.org/@web-types/bootstrap-vue/-/bootstrap-vue-1.0.1-2.tgz" />
+      <version value="1.0.0-2" url="https://registry.npmjs.org/@web-types/bootstrap-vue/-/bootstrap-vue-1.0.0-2.tgz" />
+    </package>
+    <package name="@web-types/quasar">
+      <version value="1.1.0-1" url="https://registry.npmjs.org/@web-types/quasar/-/quasar-1.1.0-1.tgz" />
+      <version value="1.0.5-1" url="https://registry.npmjs.org/@web-types/quasar/-/quasar-1.0.5-1.tgz" />
+      <version value="1.0.0-rc.5.2" url="https://registry.npmjs.org/@web-types/quasar/-/quasar-1.0.0-rc.5.2.tgz" />
+      <version value="1.0.0-rc.1.2" url="https://registry.npmjs.org/@web-types/quasar/-/quasar-1.0.0-rc.1.2.tgz" />
+      <version value="1.0.0-1" url="https://registry.npmjs.org/@web-types/quasar/-/quasar-1.0.0-1.tgz" />
+    </package>
+    <package name="@web-types/quasar-framework">
+      <version value="0.17.19-3" url="https://registry.npmjs.org/@web-types/quasar-framework/-/quasar-framework-0.17.19-3.tgz" />
+      <version value="0.17.18-3" url="https://registry.npmjs.org/@web-types/quasar-framework/-/quasar-framework-0.17.18-3.tgz" />
+      <version value="0.17.17-3" url="https://registry.npmjs.org/@web-types/quasar-framework/-/quasar-framework-0.17.17-3.tgz" />
+      <version value="0.17.16-3" url="https://registry.npmjs.org/@web-types/quasar-framework/-/quasar-framework-0.17.16-3.tgz" />
+      <version value="0.17.15-3" url="https://registry.npmjs.org/@web-types/quasar-framework/-/quasar-framework-0.17.15-3.tgz" />
+      <version value="0.17.13-3" url="https://registry.npmjs.org/@web-types/quasar-framework/-/quasar-framework-0.17.13-3.tgz" />
+      <version value="0.17.11-3" url="https://registry.npmjs.org/@web-types/quasar-framework/-/quasar-framework-0.17.11-3.tgz" />
+      <version value="0.17.10-3" url="https://registry.npmjs.org/@web-types/quasar-framework/-/quasar-framework-0.17.10-3.tgz" />
+      <version value="0.17.9-3" url="https://registry.npmjs.org/@web-types/quasar-framework/-/quasar-framework-0.17.9-3.tgz" />
+      <version value="0.17.7-3" url="https://registry.npmjs.org/@web-types/quasar-framework/-/quasar-framework-0.17.7-3.tgz" />
+      <version value="0.17.6-3" url="https://registry.npmjs.org/@web-types/quasar-framework/-/quasar-framework-0.17.6-3.tgz" />
+      <version value="0.17.5-3" url="https://registry.npmjs.org/@web-types/quasar-framework/-/quasar-framework-0.17.5-3.tgz" />
+      <version value="0.17.0-3" url="https://registry.npmjs.org/@web-types/quasar-framework/-/quasar-framework-0.17.0-3.tgz" />
+    </package>
+    <package name="@web-types/vue">
+      <version value="3.0.0-1" url="https://registry.npmjs.org/@web-types/vue/-/vue-3.0.0-1.tgz" />
+      <version value="2.5.0-4" url="https://registry.npmjs.org/@web-types/vue/-/vue-2.5.0-4.tgz" />
+      <version value="2.4.0-2" url="https://registry.npmjs.org/@web-types/vue/-/vue-2.4.0-2.tgz" />
+      <version value="2.3.0-2" url="https://registry.npmjs.org/@web-types/vue/-/vue-2.3.0-2.tgz" />
+      <version value="2.2.0-4" url="https://registry.npmjs.org/@web-types/vue/-/vue-2.2.0-4.tgz" />
+      <version value="2.1.8-4" url="https://registry.npmjs.org/@web-types/vue/-/vue-2.1.8-4.tgz" />
+      <version value="2.1.0-4" url="https://registry.npmjs.org/@web-types/vue/-/vue-2.1.0-4.tgz" />
+      <version value="2.0.0-5" url="https://registry.npmjs.org/@web-types/vue/-/vue-2.0.0-5.tgz" />
+      <version value="1.0.0-5" url="https://registry.npmjs.org/@web-types/vue/-/vue-1.0.0-5.tgz" />
+    </package>
+    <package name="@web-types/vue-client-only">
+      <version value="2.0.0-1" url="https://registry.npmjs.org/@web-types/vue-client-only/-/vue-client-only-2.0.0-1.tgz" />
+    </package>
+    <package name="@web-types/vue-no-ssr">
+      <version value="1.0.0-1" url="https://registry.npmjs.org/@web-types/vue-no-ssr/-/vue-no-ssr-1.0.0-1.tgz" />
+    </package>
+    <package name="@web-types/vue-router">
+      <version value="3.1.0-1" url="https://registry.npmjs.org/@web-types/vue-router/-/vue-router-3.1.0-1.tgz" />
+      <version value="3.0.0-1" url="https://registry.npmjs.org/@web-types/vue-router/-/vue-router-3.0.0-1.tgz" />
+    </package>
+    <package name="@web-types/vuetify">
+      <version value="2.0.15-1" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-2.0.15-1.tgz" />
+      <version value="2.0.12-1" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-2.0.12-1.tgz" />
+      <version value="2.0.5-1" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-2.0.5-1.tgz" />
+      <version value="2.0.4-1" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-2.0.4-1.tgz" />
+      <version value="2.0.1-1" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-2.0.1-1.tgz" />
+      <version value="2.0.0-1" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-2.0.0-1.tgz" />
+      <version value="1.5.12-2" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.5.12-2.tgz" />
+      <version value="1.5.1-2" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.5.1-2.tgz" />
+      <version value="1.5.0-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.5.0-3.tgz" />
+      <version value="1.4.5-2" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.4.5-2.tgz" />
+      <version value="1.4.4-2" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.4.4-2.tgz" />
+      <version value="1.4.1-2" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.4.1-2.tgz" />
+      <version value="1.4.0-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.4.0-3.tgz" />
+      <version value="1.3.14-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.3.14-3.tgz" />
+      <version value="1.3.9-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.3.9-3.tgz" />
+      <version value="1.3.8-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.3.8-3.tgz" />
+      <version value="1.3.2-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.3.2-3.tgz" />
+      <version value="1.3.1-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.3.1-3.tgz" />
+      <version value="1.3.0-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.3.0-3.tgz" />
+      <version value="1.2.4-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.2.4-3.tgz" />
+      <version value="1.2.2-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.2.2-3.tgz" />
+      <version value="1.2.0-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.2.0-3.tgz" />
+      <version value="1.1.12-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.1.12-3.tgz" />
+      <version value="1.1.10-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.1.10-3.tgz" />
+      <version value="1.1.9-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.1.9-3.tgz" />
+      <version value="1.1.6-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.1.6-3.tgz" />
+      <version value="1.1.4-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.1.4-3.tgz" />
+      <version value="1.1.2-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.1.2-3.tgz" />
+      <version value="1.1.0-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.1.0-3.tgz" />
+      <version value="1.0.11-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.0.11-3.tgz" />
+      <version value="1.0.2-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.0.2-3.tgz" />
+      <version value="1.0.0-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-1.0.0-3.tgz" />
+      <version value="0.17.2-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-0.17.2-3.tgz" />
+      <version value="0.17.0-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-0.17.0-3.tgz" />
+      <version value="0.16.5-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-0.16.5-3.tgz" />
+      <version value="0.16.4-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-0.16.4-3.tgz" />
+      <version value="0.16.2-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-0.16.2-3.tgz" />
+      <version value="0.16.1-3" url="https://registry.npmjs.org/@web-types/vuetify/-/vuetify-0.16.1-3.tgz" />
+    </package>
+  </component>
+</application>

+ 122 - 0
wsl.distributions.xml

@@ -0,0 +1,122 @@
+<application>
+  <component name="WslDistributionsService" version="1">
+    <descriptors>
+      <set>
+        <descriptor>
+          <id>DEBIAN</id>
+          <microsoft-id>Debian</microsoft-id>
+          <executable-path>debian.exe</executable-path>
+          <presentable-name>Debian GNU/Linux</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>KALI</id>
+          <microsoft-id>kali-linux</microsoft-id>
+          <executable-path>kali.exe</executable-path>
+          <presentable-name>Kali Linux</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>OPENSUSE42</id>
+          <microsoft-id>openSUSE-42</microsoft-id>
+          <executable-path>opensuse-42.exe</executable-path>
+          <presentable-name>openSUSE Leap 42</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>SLES12</id>
+          <microsoft-id>SLES-12</microsoft-id>
+          <executable-path>sles-12.exe</executable-path>
+          <presentable-name>SUSE Linux Enterprise Server 12</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>SLES15</id>
+          <microsoft-id>SLES-15</microsoft-id>
+          <executable-path>sles-15.exe</executable-path>
+          <presentable-name>SUSE Linux Enterprise Server 15</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>SLES-15-SP1</id>
+          <microsoft-id>SLES-15-SP1</microsoft-id>
+          <executable-path>SLES-15-SP1.exe</executable-path>
+          <presentable-name>SUSE Linux Enterprise Server 15 SP1</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>SUSE-Linux-Enterprise-Server-15-SP2</id>
+          <microsoft-id>SUSE-Linux-Enterprise-Server-15-SP2</microsoft-id>
+          <executable-path>SUSE-Linux-Enterprise-Server-15-SP2.exe</executable-path>
+          <presentable-name>SUSE Linux Enterprise Server 15 SP2</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>OPENSUSE15</id>
+          <microsoft-id>openSUSE-Leap-15</microsoft-id>
+          <executable-path>openSUSE-Leap-15.exe</executable-path>
+          <presentable-name>openSUSE Leap 15</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>OPENSUSE15-1</id>
+          <microsoft-id>openSUSE-Leap-15-1</microsoft-id>
+          <executable-path>openSUSE-Leap-15-1.exe</executable-path>
+          <presentable-name>openSUSE Leap 15.1</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>OPENSUSE15.2</id>
+          <microsoft-id>openSUSE-Leap-15.2</microsoft-id>
+          <executable-path>openSUSE-Leap-15.2.exe</executable-path>
+          <presentable-name>openSUSE Leap 15.2</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>UBUNTU</id>
+          <microsoft-id>Ubuntu</microsoft-id>
+          <executable-path>ubuntu.exe</executable-path>
+          <presentable-name>Ubuntu</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>UBUNTU1604</id>
+          <microsoft-id>Ubuntu-16.04</microsoft-id>
+          <executable-path>ubuntu1604.exe</executable-path>
+          <presentable-name>Ubuntu 16.04</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>UBUNTU1804</id>
+          <microsoft-id>Ubuntu-18.04</microsoft-id>
+          <executable-path>ubuntu1804.exe</executable-path>
+          <presentable-name>Ubuntu 18.04</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>UBUNTU2004</id>
+          <microsoft-id>Ubuntu-20.04</microsoft-id>
+          <executable-path>ubuntu2004.exe</executable-path>
+          <presentable-name>Ubuntu 20.04</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>Ubuntu-CommPrev</id>
+          <microsoft-id>Ubuntu-CommPrev</microsoft-id>
+          <executable-path>ubuntupreview.exe</executable-path>
+          <presentable-name>Ubuntu on Windows Community Preview</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>PENGWIN</id>
+          <microsoft-id>WLinux</microsoft-id>
+          <executable-path>pengwin.exe</executable-path>
+          <presentable-name>Pengwin</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>PENGWIN_ENTERPRISE</id>
+          <microsoft-id>WLE</microsoft-id>
+          <executable-path>wle.exe</executable-path>
+          <presentable-name>Pengwin Enterprise</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>fedoraremix</id>
+          <microsoft-id>fedoraremix</microsoft-id>
+          <executable-path>fedoraremix.exe</executable-path>
+          <presentable-name>Fedora Remix for WSL</presentable-name>
+        </descriptor>
+        <descriptor>
+          <id>ARCH</id>
+          <microsoft-id>Arch</microsoft-id>
+          <executable-path>Arch.exe</executable-path>
+          <presentable-name>Arch Linux</presentable-name>
+        </descriptor>
+      </set>
+    </descriptors>
+  </component>
+</application>