Forráskód Böngészése

Merge remote-tracking branch 'origin/master'

rengb 5 éve
szülő
commit
47aa940d8a

+ 44 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0192.java

@@ -0,0 +1,44 @@
+package com.lantone.qc.kernel.catalogue.firstpagerecord;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.Content;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.FirstPageRecordDoc;
+import com.lantone.qc.pub.model.doc.OperationDiscussionDoc;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP0192
+ * @Description : 主要手术及操作名称与病程记录不一致
+ * @Author : 胡敬
+ * @Date: 2020-03-16 20:28
+ */
+@Component
+public class FIRP0192 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status = "0";
+        FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
+        List<OperationDiscussionDoc> operationDiscussionDocs = inputInfo.getOperationDiscussionDocs();
+        if(firstPageRecordDoc != null && operationDiscussionDocs.size()>0 ){
+            Map<String, Object> firstPageRecordDocStructureMap = firstPageRecordDoc.getStructureExtMap();
+            OperationDiscussionDoc operationDiscussionDoc = operationDiscussionDocs.get(0);
+            Map<String, String> structureMap = operationDiscussionDoc.getStructureMap();
+            String opertaion = structureMap.get("手术方式");
+            List<Map<String, String>> mapList = (List<Map<String, String>>) firstPageRecordDocStructureMap.get(Content.operative_information);
+            if(mapList != null && mapList.size()>0){
+                Map<String, String> op = mapList.get(0);
+                String oName = op.get(Content.operative_name);
+                    if(StringUtils.isNotEmpty(opertaion) && !opertaion.equals(oName)){
+                        status = "-1";
+                }
+            }
+
+        }
+
+    }
+}

+ 21 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0193.java

@@ -6,8 +6,11 @@ import com.lantone.qc.pub.Content;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.FirstPageRecordDoc;
+import com.lantone.qc.pub.model.doc.OperationDiscussionDoc;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -21,6 +24,24 @@ public class FIRP0193 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status = "0";
         FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
+        List<OperationDiscussionDoc> operationDiscussionDocs = inputInfo.getOperationDiscussionDocs();
+        if(firstPageRecordDoc != null && operationDiscussionDocs.size()>0 ){
+            Map<String, Object> firstPageRecordDocStructureMap = firstPageRecordDoc.getStructureExtMap();
+            OperationDiscussionDoc operationDiscussionDoc = operationDiscussionDocs.get(0);
+            Map<String, String> structureMap = operationDiscussionDoc.getStructureMap();
+            String opertaion = structureMap.get("手术方式");
+            List<Map<String, String>> mapList = (List<Map<String, String>>) firstPageRecordDocStructureMap.get(Content.operative_information);
+            if(mapList != null && mapList.size()>0){
+                for (Map<String, String> op :mapList) {
+                    String oName = op.get(Content.operative_name);
+                    if(StringUtils.isNotEmpty(opertaion) && !opertaion.contains(oName)){
+                        status = "-1";
+                        break;
+                    }
+                }
+            }
+
+        }
 
     }
 }

+ 2 - 1
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/model/EntityEnum.java

@@ -8,7 +8,8 @@ package com.lantone.qc.kernel.structure.ai.model;
 public enum EntityEnum {
     CLINICAL_FEATURE("临床表现"), DIEASE("疾病名称"), BODY("身体部位"), SIGN("体征"), INDEX_VALUE("指标值"),
     LABORATORY("实验室检查"), LABORATORY_VALUE("实验室检查值"), AUXILIARY_EXAMINATION("辅助检查"), AUXILIARY_DESCRIPT("辅助检查描述"),
-    NEGATIVE("否定"), POSSIBLE("可能的"), TIME("时间"), CAUSE("诱因"), MODIFICATION("修饰"),
+        NEGATIVE("否定"), POSSIBLE("可能的"), TIME("时间"), CAUSE("诱因"), MODIFICATION("修饰"),
+    PROPERTY("性质"), DEGREE("程度"), AGGRAVATE("加重情况"), RELIEF("缓解情况"), BEHOSPITALIZEDWAY("入院途径"),
     TREND("趋势"), FREQUENCY("频率"), QUANTITY("数量"), SIZE("尺寸"), CURE("治疗"), DRUG("药物名称"),
     DOSE("药品剂量"), OPERATION("手术名称"), GENERAL("一般情况"), GENERAL_DESCRIPT("一般情况描述"),
     OPERATION_KEYWORD("手术史"), OPERATION_RESULT("手术结果"), INJURY("外伤史"), ALLERGY("过敏"),

+ 66 - 59
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/process/EntityProcessClinic.java

@@ -3,70 +3,50 @@ package com.lantone.qc.kernel.structure.ai.process;
 
 import com.alibaba.fastjson.JSONObject;
 import com.lantone.qc.kernel.structure.ai.model.EntityEnum;
-import com.lantone.qc.kernel.util.KernelConstants;
+import com.lantone.qc.kernel.structure.ai.model.Lemma;
+import com.lantone.qc.kernel.util.DiagEnhancer;
 import com.lantone.qc.pub.model.entity.*;
-import org.apache.commons.lang3.StringUtils;
+import com.lantone.qc.pub.model.label.PresentLabel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Map;
 
+/**
+ * 现病史处理
+ */
 public class EntityProcessClinic extends EntityProcess {
-    public List<Clinical> extractEntity(JSONObject aiOut) {
-        List<Clinical> clinicals = new ArrayList<>();
-        Clinical clinical;
-        List<Map<String, String>> clinicalEntityList = processJson(aiOut, EntityEnum.CLINICAL_FEATURE.toString());
-        for (Map<String, String> clinicalEntityEntry : clinicalEntityList) {
-            if (StringUtils.isEmpty(clinicalEntityEntry.get(EntityEnum.CLINICAL_FEATURE.toString()))) {
-                continue;
-            }
-            clinical = new Clinical();
-            List<PD> timestamp = new LinkedList<>();
-            for (String key : clinicalEntityEntry.keySet()) {
-                String entity = StringUtils.isEmpty(clinicalEntityEntry.get(key)) ? "" : clinicalEntityEntry.get(key);
-                switch (EntityEnum.parseOfValue(key)){
-                    case CLINICAL_FEATURE:
-                        clinical.setName(clinicalEntityEntry.get(key));
-                        if (!KernelConstants.clinicNameList.contains(clinicalEntityEntry.get(key))) {
-                            KernelConstants.clinicNameList.add(clinicalEntityEntry.get(key));
-                        }
-                        break;
-                    case NEGATIVE:
-                        Negative negative = new Negative();
-                        negative.setName(entity);
-                        clinical.setNegative(negative);
-                        break;
-                    case MODIFICATION:
-                        Modification modification = new Modification();
-                        modification.setName(entity);
-                        if (!KernelConstants.clinicModificationList.contains(entity)) {
-                            KernelConstants.clinicModificationList.add(entity);
-                        }
-                        clinical.setModification(modification);
-                        break;
+    private Logger logger = LoggerFactory.getLogger(EntityProcessPast.class);
+
+    public PresentLabel extractEntity(JSONObject aiOut) {
+        PresentLabel presentLabel = new PresentLabel();
+        try {
+            //临床表现
+            List<Lemma> clinicLemmas = createEntityTree(aiOut, EntityEnum.CLINICAL_FEATURE.toString());
+            for (Lemma lemma : clinicLemmas) {
+                Clinical clinical = new Clinical();
+                clinical.setName(lemma.getText());
 
-                    case BODY:
-                        BodyPart bodyPart = new BodyPart();
-                        bodyPart.setName(entity);
-                        clinical.setBodyPart(bodyPart);
-                        break;
-                    case TREND:
-                        Trend trend = new Trend();
-                        trend.setName(entity);
-                        clinical.setTrend(trend);
-                        break;
-                    case CAUSE:
-                        Cause cause = new Cause();
-                        cause.setName(entity);
-                        clinical.setCause(cause);
-                        break;
-                    case TIME:
-                        String[] time_split = entity.split(",");
-                        for (String time:time_split) {
+                List<PD> timestamp = new LinkedList<>();
+                for (Lemma relationLemma : lemma.getRelationLemmas()) {
+                    if (relationLemma.getProperty().equals(EntityEnum.NEGATIVE.toString())) {
+                        clinical.setNegative(findNegative(lemma));
+                    }
+                    clinical.setModification(findT(lemma, new Modification(), EntityEnum.MODIFICATION.toString()));//修饰
+                    clinical.setBodyPart(findT(lemma, new BodyPart(), EntityEnum.BODY.toString()));//部位
+                    clinical.setTrend(findT(lemma, new Trend(), EntityEnum.TREND.toString()));//趋势
+                    clinical.setCause(findT(lemma, new Cause(), EntityEnum.CAUSE.toString()));//诱因
+                    clinical.setProperty(findT(lemma, new Property(), EntityEnum.PROPERTY.toString()));//性质
+                    clinical.setDegree(findT(lemma, new Degree(), EntityEnum.DEGREE.toString()));//程度
+                    clinical.setAggravate(findT(lemma, new Aggravate(), EntityEnum.AGGRAVATE.toString()));//加重因素
+                    clinical.setRelief(findT(lemma, new Relief(), EntityEnum.RELIEF.toString()));//缓解因素
+                    if (relationLemma.getProperty().equals(EntityEnum.TIME.toString())) {
+                        String[] time_split = relationLemma.getText().split(",");
+                        for (String time : time_split) {
                             PD pd = new PD();
                             String[] val_unit = new String[2];
-                            if(time.trim().length()>0){
+                            if (time.trim().length() > 0) {
                                 val_unit = extract_digit(time);
                             }
                             pd.setValue(val_unit[0]);
@@ -74,12 +54,39 @@ public class EntityProcessClinic extends EntityProcess {
                             pd.setName(time);
                             timestamp.add(pd);
                         }
-                        break;
+                    }
+                }
+                presentLabel.add(presentLabel.getClinicals(), clinical);
+            }
+            //入院途径
+            List<Lemma> beHospitalizedWayLemmas = createEntityTree(aiOut, EntityEnum.BEHOSPITALIZEDWAY.toString());
+            for (Lemma lemma : beHospitalizedWayLemmas) {
+                BeHospitalizedWay beHospitalizedWay = new BeHospitalizedWay();
+                beHospitalizedWay.setName(lemma.getText());
+                presentLabel.setBeHospitalizedWay(beHospitalizedWay);
+            }
+            //读取疾病信息
+            List<Lemma> diagLemmas = createEntityTree(aiOut, EntityEnum.DIEASE.toString());
+            for (Lemma lemma : diagLemmas) {
+                Diag diag = DiagEnhancer.create(lemma.getText());
+                if (lemma.isHaveChildren()) {
+                    //阴性
+                    diag.setNegative(findNegative(lemma));
+                    //可能的
+                    for (Lemma relationLemma : lemma.getRelationLemmas()) {
+                        if (relationLemma.getProperty().equals(EntityEnum.POSSIBLE.toString())) {
+                            Possible possible = new Possible();
+                            possible.setName(relationLemma.getText());
+                            diag.setPossible(possible);
+                        }
+                    }
                 }
+                presentLabel.add(presentLabel.getDiags(), diag);
             }
-            clinical.setTimestamp(timestamp);
-            clinicals.add(clinical);
+        } catch (Exception e) {
+            e.printStackTrace();
+            logger.error(e.getMessage(), e);
         }
-        return clinicals;
+        return presentLabel;
     }
 }

+ 1 - 0
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/process/EntityProcessPast.java

@@ -192,6 +192,7 @@ public class EntityProcessPast extends EntityProcess {
                 pastLabel.addDiagInfectious(diagInfectious);
             }
         } catch (Exception e) {
+            e.printStackTrace();
             logger.error(e.getMessage(), e);
         }
         return pastLabel;

+ 3 - 40
kernel/src/main/java/com/lantone/qc/kernel/util/CacheFileManager.java

@@ -111,53 +111,16 @@ public class CacheFileManager {
             }
             fw.close();
 
-            //性质词典
-            sql = "select name from kl_modification where type_id = 4";
-            fw = new FileWriter(path + "concept_prop.dict");
-            rs = st.executeQuery(sql);
-            while (rs.next()) {
-                r1 = rs.getString(1);
-                r1 = r1==null?"":r1;
-//                r1 = CryptUtil.decrypt_char(r1==null?"":r1);
-                fw.write(encrypDES.encrytor(r1));
-                fw.write("\n");
-            }
-            fw.close();
+            //医院疾病信息
+            sql = "select name from kl_disease";
 
-            //程度词典
-            sql = "select name from kl_modification where type_id = 6";
-            fw = new FileWriter(path + "concept_degree.dict");
+            fw = new FileWriter(path + "hospital_diag_info.dict");
             rs = st.executeQuery(sql);
             while (rs.next()) {
                 r1 = rs.getString(1);
-                r1 = r1==null?"":r1;
 //                r1 = CryptUtil.decrypt_char(r1==null?"":r1);
-                fw.write(encrypDES.encrytor(r1));
-                fw.write("\n");
-            }
-            fw.close();
-
-            //加剧词典
-            sql = "select name from kl_modification where type_id = 1";
-            fw = new FileWriter(path + "concept_aggravate.dict");
-            rs = st.executeQuery(sql);
-            while (rs.next()) {
-                r1 = rs.getString(1);
                 r1 = r1==null?"":r1;
-//                r1 = CryptUtil.decrypt_char(r1==null?"":r1);
-                fw.write(encrypDES.encrytor(r1));
-                fw.write("\n");
-            }
-            fw.close();
 
-            //缓解词典
-            sql = "select name from kl_modification where type_id = 2";
-            fw = new FileWriter(path + "concept_relief.dict");
-            rs = st.executeQuery(sql);
-            while (rs.next()) {
-                r1 = rs.getString(1);
-                r1 = r1==null?"":r1;
-//                r1 = CryptUtil.decrypt_char(r1==null?"":r1);
                 fw.write(encrypDES.encrytor(r1));
                 fw.write("\n");
             }

+ 36 - 25
kernel/src/main/java/com/lantone/qc/kernel/util/CacheUtil.java

@@ -32,9 +32,9 @@ public class CacheUtil implements ApplicationRunner {
     public void run(ApplicationArguments var1) {
         try {
             this.putConceptDiagPropertyMap();//疾病相关信息放入缓存 包括疾病是否是慢病、传染病、常见症状、同义词
-            this.putConceptPropMap();//性质词典
-            this.putConceptDegreeMap();//程度词典
-            this.putDiagHospitalReflect();//医院疾病名称映射,仅做测试用,由华卓完成和医院对接放入redis
+            this.putHospitalDiagMap();//医院疾病信息
+            this.putHospitalDiagHuaZMap();//医院华卓映射
+            this.putLantoneDiagHuaZMap();//朗通华卓映射
             this.putClinicBodyPartMap();//症状需要部位描述词典放入redis缓存
         } catch (Exception e) {
             logger.error("缓存文件读取错误。。。");
@@ -73,31 +73,52 @@ public class CacheUtil implements ApplicationRunner {
     }
 
     /**
-     * 性质词典放入redis缓存
+     * 医院疾病信息放入redis缓存
      */
-    public void putConceptPropMap() throws Exception {
+    public void putHospitalDiagMap() throws Exception {
         Configuration configuration = new DefaultConfig();
-        List<String> lines = configuration.readTargetFileContents("cache/concept_prop.dict");
-        List<String> propList = new ArrayList<>();
+        List<String> lines = configuration.readTargetFileContents("cache/hospital_diag_info.dict");
+        Map<String, Map<String, String>> hospitalDiagMap = new HashMap<>();
         for (String line : lines) {
-            propList.add(line);
+            Map<String, String> detail = new HashMap<>();
+            detail.put("name", line);
+            detail.put("icd10", "A001");
+            hospitalDiagMap.put(line, detail);
         }
-        redisUtil.set(KernelConstants.CONCEPT_PROPERTY_LIST, propList);
+        redisUtil.set(KernelConstants.HOSPITAL_DIAG_MAP, hospitalDiagMap);
     }
 
     /**
-     * 程度词典放入redis缓存
+     * 医院和华卓映射疾病信息放入redis缓存
      */
-    public void putConceptDegreeMap() throws Exception {
+    public void putHospitalDiagHuaZMap() throws Exception {
         Configuration configuration = new DefaultConfig();
-        List<String> lines = configuration.readTargetFileContents("cache/concept_degree.dict");
-        List<String> degreeList = new ArrayList<>();
+        List<String> lines = configuration.readTargetFileContents("cache/hospital_diag_info.dict");
+        Map<String, Map<String, String>> hospitalDiagMap = new HashMap<>();
         for (String line : lines) {
-            degreeList.add(line);
+            Map<String, String> detail = new HashMap<>();
+            detail.put("name", line);
+            detail.put("icd10", "A001");
+            hospitalDiagMap.put(line, detail);
         }
-        redisUtil.set(KernelConstants.CONCEPT_DEGREE_LIST, degreeList);
+        redisUtil.set(KernelConstants.HOSPITAL_DIAG_HUAZ_MAP, hospitalDiagMap);
     }
 
+    /**
+     * 医院和华卓映射疾病信息放入redis缓存
+     */
+    public void putLantoneDiagHuaZMap() throws Exception {
+        Configuration configuration = new DefaultConfig();
+        List<String> lines = configuration.readTargetFileContents("cache/hospital_diag_info.dict");
+        Map<String, Map<String, String>> hospitalDiagMap = new HashMap<>();
+        for (String line : lines) {
+            Map<String, String> detail = new HashMap<>();
+            detail.put("name", line);
+            detail.put("icd10", "A001");
+            hospitalDiagMap.put(line, detail);
+        }
+        redisUtil.set(KernelConstants.LANTONE_DIAG_HUAZ_MAP, hospitalDiagMap);
+    }
     /**
      * 症状需要部位描述词典放入redis缓存
      */
@@ -110,14 +131,4 @@ public class CacheUtil implements ApplicationRunner {
         }
         redisUtil.set(KernelConstants.CONCEPT_CLINIC_BODYPART_PROPERTIES_LIST, clinicBodyPartList);
     }
-
-    /**
-     * 医院疾病名称映射,仅做测试用,由华卓完成和医院对接放入redis
-     * @throws Exception
-     */
-    public void putDiagHospitalReflect() throws Exception {
-        Map<String, String> map = new HashMap<>();
-        map.put("腹痛待查", "腹痛待查 Concept");
-        redisUtil.set(KernelConstants.CONCEPT_DIAG_HOSPITAL_REFLECT, map);
-    }
 }

+ 7 - 6
kernel/src/main/java/com/lantone/qc/kernel/util/KernelConstants.java

@@ -14,14 +14,15 @@ import java.util.Map;
 public class KernelConstants {
     //疾病相关属性
     public static final String CONCEPT_DIAG_PROPERTY_MAP = "concept_diag_property_map";
-    //性质词典
-    public static final String CONCEPT_PROPERTY_LIST = "concept_property_list";
-    //程度词典
-    public static final String CONCEPT_DEGREE_LIST = "concept_degree_list";
     //部位需要症状信息
     public static final String CONCEPT_CLINIC_BODYPART_PROPERTIES_LIST = "concept_clinic_bodypart_properties_list";
-    //诊断名称映射
-    public static final String CONCEPT_DIAG_HOSPITAL_REFLECT = "concept_diag_hospital_reflect";
+    //医院华卓映射映射
+    public static final String HOSPITAL_DIAG_HUAZ_MAP = "hospital_diag_huaz_map";
+    //朗通华卓映射映射
+    public static final String LANTONE_DIAG_HUAZ_MAP = "lantone_diag_huaz_map";
+    //医院疾病信息
+    public static final String HOSPITAL_DIAG_MAP = "hospital_diag_map";
+
 
     public static List<String> hospitalDiagNameList = new ArrayList<>();
     public static List<String> clinicModificationList = new ArrayList<>();

+ 0 - 36
kernel/src/main/resources/cache/concept_degree.dict

@@ -1,36 +0,0 @@
-uidUdrJbk78=
-qQqpEo15ssQ=
-13hMf2+27n8=
-IBspE5SaQug=
-ACBldOCZbZA=
-1vQM7azwDns=
-ygAofZDmoXg=
-wylFDXrAYHE=
-P+BKbL1kQD8=
-tahNLlWjgJE=
-80Nkxhfxkgs=
-oY6bbHm5Lps=
-tx2fJKAtv1w=
-OrWlJTJ0J96Zj8sU8q9w8Q==
-PjQOO0tmrRw=
-AlvzKzUUJvw=
-fEJ8CwA/38I=
-jt/6SW87dbg=
-D3S+G5SIuUM=
-9aoxo1pS5eo=
-57dcXjp1Pvg=
-jERuqkt0n1U=
-rbpC50cjK/8=
-0BgO0r+MlpeZj8sU8q9w8Q==
-UI5S0fjK0mgEBLNEPwIttg==
-zqk1sdHLTGo=
-mxVgiYE3Zlw=
-j2t0YGLXbQQ=
-8P7OD2WW2MU=
-9JAYuDiaFSQ=
-PtoheGlVmys=
-80eiyRR8T7c=
-f7a1GfJz/oA=
-dc3CWhrdobs=
-9N9cQ/xIE3E=
-iRU7Kkhw1tc=

+ 0 - 519
kernel/src/main/resources/cache/concept_prop.dict

@@ -1,519 +0,0 @@
-odVNTZCTdNYaMWEdQab8gA==
-OkkXMTinE2ExdtgaUF2iRg==
-AOYA4qZHaCJmDLcVMWpn6g==
-XTjWGwZLoH3tUpGJ52qpCg==
-fvMFspEFZPkaMWEdQab8gA==
-jPj224YQYEpq0pKI6dAjRg==
-jGNBUiKEPrGghPBEKYKOCQ==
-gbYbnrBrsk+ghPBEKYKOCQ==
-qgptQDm5mSgaMWEdQab8gA==
-V0frMxTQuVcaMWEdQab8gA==
-gI1QxuQhjRgaMWEdQab8gA==
-0uBAYDcA6Mm/WZ1+qt48kw==
-0ESg7XKAgw8aMWEdQab8gA==
-L1LCaflWvS4aMWEdQab8gA==
-JFo4hI3I1qkaMWEdQab8gA==
-tJtba8Y02GQaMWEdQab8gA==
-JpIvzr3hfcoaMWEdQab8gA==
-+EzUoT1K0zu/WZ1+qt48kw==
-G5tSgOX6vkA=
-3tjuh+egedW/WZ1+qt48kw==
-I0wKw40k9C6/WZ1+qt48kw==
-TMuxXbi9ESEaMWEdQab8gA==
-yo+GbHifkPk=
-LBjGu7/8rYw=
-BVz/fS/NZOCghPBEKYKOCQ==
-p3JVn8leTclq0pKI6dAjRg==
-zDUsAXw2UVQHjnX6dZF4Ew==
-l494Q3Tocs9q0pKI6dAjRg==
-e5FsHdefSuFq0pKI6dAjRg==
-DF2pk9TUrBMaMWEdQab8gA==
-EGkUrv/kUpS/WZ1+qt48kw==
-1X3Dx7FCTJQ=
-JrI31Jij6WAaMWEdQab8gA==
-o71A6lUJMwzpSPMVrsDEgw==
-i3rPNqdocMgaMWEdQab8gA==
-RpYUIRDwVBIaMWEdQab8gA==
-WonmG1XCAU4aMWEdQab8gA==
-JZMct5466Rhq0pKI6dAjRg==
-k63/U+Ort/saMWEdQab8gA==
-CT1Qdv9xVW8=
-+ZOgvTYPC4YaMWEdQab8gA==
-R6oUrbemUS5q0pKI6dAjRg==
-jV5cHFmacYMaMWEdQab8gA==
-2+whHf/kfipsvxdkUUultA==
-QIagWIYES2+ghPBEKYKOCQ==
-mri8Sg/2Vyk=
-S24S/SVRSFwaMWEdQab8gA==
-nvKb53gRgQs=
-9ydnzW/kbQUaMWEdQab8gA==
-djpdgRqrDgAaMWEdQab8gA==
-yM5gnxabdiwaMWEdQab8gA==
-wou8DCGiuy8aMWEdQab8gA==
-biT7+6/eTSsaMWEdQab8gA==
-Ea5hafp0ahIaMWEdQab8gA==
-2K+NsZ/3RjsaMWEdQab8gA==
-SGB3mhKm2uMaMWEdQab8gA==
-dqIa3WNVA1gaMWEdQab8gA==
-ZUu7KwrAHMVq0pKI6dAjRg==
-qXuWTPJLQOwaMWEdQab8gA==
-GDzRkf4gT0EaMWEdQab8gA==
-RVe725p8WhUaMWEdQab8gA==
-gymUzeBoiIRq0pKI6dAjRg==
-7KziSZAu06QaMWEdQab8gA==
-Vobhtw67+51q0pKI6dAjRg==
-Vobhtw67+514eMxTN13cAA==
-VVS4pGmCJZPpSPMVrsDEgw==
-6k99qhIC6DWghPBEKYKOCQ==
-PSCYD2hPTR0aMWEdQab8gA==
-gFUgWFy26P0=
-kyjZU3demb6ghPBEKYKOCQ==
-FjDwbPkvj7MaMWEdQab8gA==
-SpF2P7OBV2waMWEdQab8gA==
-h8Bw1OdhxCxq0pKI6dAjRg==
-bCSHFbkAL4yghPBEKYKOCQ==
-KBLbMm9Rg00aMWEdQab8gA==
-cMDXIcn4/roaMWEdQab8gA==
-3ih+r7xNphAaMWEdQab8gA==
-n1CNc/yBJBC/WZ1+qt48kw==
-Owld8/AURlw=
-mAJFy31Sjy0=
-vMcoJpn/EowaMWEdQab8gA==
-FERqB50unIIaMWEdQab8gA==
-Vk7SdPjxVe0=
-73cVW/j1HvZq0pKI6dAjRg==
-ThI1oF0jTyQaMWEdQab8gA==
-uumHReV9kAY=
-WVD3SOkblwcaMWEdQab8gA==
-uXnJFnxwdLwaMWEdQab8gA==
-36s42ZhwjJ4aMWEdQab8gA==
-8LToiFw6Mw9q0pKI6dAjRg==
-wVmCFP4ZRUU=
-Mxw29SEPM3c=
-ctUprXweh50aMWEdQab8gA==
-nAVIQhmgLsUaMWEdQab8gA==
-VQyanJdAJxoaMWEdQab8gA==
-RcaXpX5nSTIaMWEdQab8gA==
-L5zky1DDTAsaMWEdQab8gA==
-aMsbvjbfGsUaMWEdQab8gA==
-0tLH7a1oewEaMWEdQab8gA==
-gzIPNh7VvRdq0pKI6dAjRg==
-EAHqmgUXU5AaMWEdQab8gA==
-9BWAcjNnAEoaMWEdQab8gA==
-c5eJOWmExRAaMWEdQab8gA==
-g3QrwWxlyUAaMWEdQab8gA==
-iKH2ctKrQsrByebOmN8ISg==
-FbaQU4RtVjcaMWEdQab8gA==
-mYSljOcrk0K/WZ1+qt48kw==
-PkaEvXct1wgaMWEdQab8gA==
-fngGWVWYn6WdKD4j4uT1Hw==
-yuIGM9fsqMcaMWEdQab8gA==
-ts6DF4HQ0HRq0pKI6dAjRg==
-SRuSgKYJyN4aMWEdQab8gA==
-V64DvKuQSBAaMWEdQab8gA==
-iVgG1u1OC8gaMWEdQab8gA==
-zLFTuopb2xQaMWEdQab8gA==
-UKdzPT/PdY4=
-jAJIvwKpsMUaMWEdQab8gA==
-DhkxRDoZydMaMWEdQab8gA==
-ccNwU865frSghPBEKYKOCQ==
-CqDIQvkjWc4=
-9ldFqvXLJDs=
-3Ju2qperX2Rq0pKI6dAjRg==
-uvpQ8z/HkZUaMWEdQab8gA==
-fCCGDSNr4Ai/WZ1+qt48kw==
-akGV3uAmmCg=
-YKoY1HUwa5dq0pKI6dAjRg==
-FKgNi2HAQw0aMWEdQab8gA==
-5AJLdIVKJec=
-L0SygCRVgAe/WZ1+qt48kw==
-oowv/+ytHYwaMWEdQab8gA==
-64cdDvc0KKfpSPMVrsDEgw==
-zTAsKTMyHTUaMWEdQab8gA==
-Il3PMYAJ5Yo=
-8y8wJLjHjH8aMWEdQab8gA==
-QoX1/xFKfpkaMWEdQab8gA==
-6EiWonjOwKYaMWEdQab8gA==
-5HNYxlZxEDkaMWEdQab8gA==
-TNJymu+aF/u/WZ1+qt48kw==
-K+KLzhilnJQaMWEdQab8gA==
-IAucFrl7qqyp+9420nJ67g==
-Qjud1OfeyEw=
-oNnLavEfqgdq0pKI6dAjRg==
-yk/QEaG+Ae+ghPBEKYKOCQ==
-C/uLLptJUbg=
-JO28T7ZOi9Xs0sESQOYMkQ==
-G2JMIClmjIa/WZ1+qt48kw==
-PHeJ+leYfLk=
-qnB/1kQQGAPpSPMVrsDEgw==
-hwxYaOoozhIaMWEdQab8gA==
-6cTMmtjeA6WghPBEKYKOCQ==
-KQicTqs9ECAaMWEdQab8gA==
-TAPZwDxdjC0=
-OHZmOaB2mb4=
-UpMT8idizWMj0xRUKyJr6A==
-EQ0++UQ15V5q0pKI6dAjRg==
-EhN8Yg/+42MaMWEdQab8gA==
-yvOBbTrbEUoaMWEdQab8gA==
-RMUf8GCSiJ0aMWEdQab8gA==
-Vsoa9AmWfm8aMWEdQab8gA==
-4FIOF0SZJ2Nq0pKI6dAjRg==
-lprKyZfl4B6/WZ1+qt48kw==
-PWs1wbzhC2Fq0pKI6dAjRg==
-Bugt8EYpa38aMWEdQab8gA==
-kIPjEFCf30YaMWEdQab8gA==
-DQ+1TPCJs2Q=
-XLKpe1H4VQgaMWEdQab8gA==
-oQLAwK6A2y0aMWEdQab8gA==
-gThU0JmDvXNq0pKI6dAjRg==
-xvjFgDnL1rYaMWEdQab8gA==
-ttuFIQiBSmAaMWEdQab8gA==
-YfGX4BbtCXIaMWEdQab8gA==
-D6ujgaaSsGxq0pKI6dAjRg==
-3ZuHgeNgwx0aMWEdQab8gA==
-LBuXZAsIXhhq0pKI6dAjRg==
-7OGqlDA4tc0aMWEdQab8gA==
-6eIymASN6HEaMWEdQab8gA==
-rPqlaHXZIBoaMWEdQab8gA==
-sv2yZBs7V3Y=
-v9Prb5ovLLMaMWEdQab8gA==
-fptZRiOUUu9q0pKI6dAjRg==
-fMS69MoFdivs0sESQOYMkQ==
-cNBFebTOOoE=
-ZldvwrHIQlYaMWEdQab8gA==
-S/b35R4VffaghPBEKYKOCQ==
-zMoaQxZrUo4aMWEdQab8gA==
-cfNSoTgCMha/WZ1+qt48kw==
-16T3x9bfL1EaMWEdQab8gA==
-IbRtNhDz9YNq0pKI6dAjRg==
-cG1dSZtHtbyghPBEKYKOCQ==
-gIdp92qejihq0pKI6dAjRg==
-vccr/IKfDd+ghPBEKYKOCQ==
-58e2tgoIRjZq0pKI6dAjRg==
-gmLn+L6avv9q0pKI6dAjRg==
-XuHU0Y1pAdxq0pKI6dAjRg==
-9ePFcliZ0QWghPBEKYKOCQ==
-SvpqtYAA0EM=
-rsX2quclU0OghPBEKYKOCQ==
-RLc9Sca0tEVq0pKI6dAjRg==
-3ZHOm1td6qAaMWEdQab8gA==
-xaW5SqJ8iKVq0pKI6dAjRg==
-eiqhHH5l+pcaMWEdQab8gA==
-+tFbHs9uUve/WZ1+qt48kw==
-Zy4D1JdqFB8=
-KLlYPzdTChdq0pKI6dAjRg==
-eJnwrk7fAQ4j0xRUKyJr6A==
-URQ2oh9UAmRq0pKI6dAjRg==
-wQpvR1wISUYaMWEdQab8gA==
-nsnEBGav6rE=
-iWdxen7+876ghPBEKYKOCQ==
-9kEdorYq9m1q0pKI6dAjRg==
-vJABTBK+B8EaMWEdQab8gA==
-juJODJsHekFq0pKI6dAjRg==
-jT+26oG6bK1q0pKI6dAjRg==
-bHyfFlmSZkOghPBEKYKOCQ==
-ajg7j+L4sAJq0pKI6dAjRg==
-unNPBg/JFwyQroyhltzm/w==
-1WxISEQgIpWQroyhltzm/w==
-ygrHvVvMmfwaMWEdQab8gA==
-maJyte1x/HzpSPMVrsDEgw==
-oNxHPqe07fC/WZ1+qt48kw==
-AwhZhidWwMUaMWEdQab8gA==
-GJFkZQknEB4aMWEdQab8gA==
-3+/siOBL19Zq0pKI6dAjRg==
-o9PHablFoVw=
-VkQzp6jfG3lq0pKI6dAjRg==
-ZfZOQNUDXTqghPBEKYKOCQ==
-iW57Vui3M3xq0pKI6dAjRg==
-0RrRlk0qZaeghPBEKYKOCQ==
-hWwmks8uYpGQroyhltzm/w==
-a2OX1jWA7uC+AlTuumOl8Q==
-OtOP3FuKToU=
-HeV5i3Z0T4xq0pKI6dAjRg==
-kqnWOOkdTeYaMWEdQab8gA==
-x6wBNvwcttg=
-tXLObPqzKOE=
-pGzYL5VYctUaMWEdQab8gA==
-ZTORLADhCW0aMWEdQab8gA==
-7tC2Bywa6n4aMWEdQab8gA==
-cHdYiJntRWkaMWEdQab8gA==
-/9URtgHOtUUaMWEdQab8gA==
-kNsk4iO0Xd0j0xRUKyJr6A==
-Gt8HYUmouagaMWEdQab8gA==
-qef+pcIR73tq0pKI6dAjRg==
-Tiv6IlLUW/xq0pKI6dAjRg==
-xgk9x/CvXw+ghPBEKYKOCQ==
-QFQTgzuzi6W/WZ1+qt48kw==
-2hGJbe0t7udq0pKI6dAjRg==
-YbJIPW+6JnY=
-Jw0ZKVQkmXeghPBEKYKOCQ==
-h//Ur64O+iI=
-1czDtKTL3XS/WZ1+qt48kw==
-0bl2kILVx8Jq0pKI6dAjRg==
-y9wq0xYa5bU=
-DFLQgfaB+E8=
-2S3kaNxJO58aMWEdQab8gA==
-C7LBN6EQAUwaMWEdQab8gA==
-sGbNCQU0GXpq0pKI6dAjRg==
-7rHv+q9PhqxDD1r5d/BAag==
-N76eBZg3YC0aMWEdQab8gA==
-gZ1HFs0NJ7w=
-TgowklDSJtFq0pKI6dAjRg==
-XXxX/NgmOKMaMWEdQab8gA==
-2ipORgezQiA=
-YkR6TZLmwPZq0pKI6dAjRg==
-xhdoLoMnPT8aMWEdQab8gA==
-kTQ5h7uqTd0aMWEdQab8gA==
-1diZRewSThxq0pKI6dAjRg==
-DdOs5Dtw0QwaMWEdQab8gA==
-afmfQi67xnJq0pKI6dAjRg==
-NSeY4f8Mo4AaMWEdQab8gA==
-9Mqch0gZ4bMaMWEdQab8gA==
-edzHxXIBMxsaMWEdQab8gA==
-pQ9xelBzl1caMWEdQab8gA==
-htAyobG6kIBq0pKI6dAjRg==
-2TyAqMIiRu4=
-ZhsxW8BXhlu/WZ1+qt48kw==
-cvMNyuCR8jnpSPMVrsDEgw==
-Y694kepkOly/WZ1+qt48kw==
-ETolRKe5xhtq0pKI6dAjRg==
-9UyLk6fZS1s=
-9FYOzHANgzaghPBEKYKOCQ==
-FaD8Wj7rgDS/WZ1+qt48kw==
-FaD8Wj7rgDRpvCUuYX4gJA==
-FaD8Wj7rgDScR1QaELJR/w==
-AWMrq4G0FvA=
-j0xYRyAbdp4aMWEdQab8gA==
-ukoV0I2Qhxw=
-kWBkNzUYD8xq0pKI6dAjRg==
-nch6ndHEtL8aMWEdQab8gA==
-mr66kJ4u4/4aMWEdQab8gA==
-zCDDcipYGBYaMWEdQab8gA==
-JawkevnCrNcaMWEdQab8gA==
-X9DVt+bYPiU=
-dXKM9+v0/lkaMWEdQab8gA==
-6g7qp2z0JLDpSPMVrsDEgw==
-/fWZ8u1l5kCghPBEKYKOCQ==
-/h3WmQVnhkaQroyhltzm/w==
-D2eIGo+CU0dq0pKI6dAjRg==
-E5i7seXYodqghPBEKYKOCQ==
-4wo8hNCdEQHcJqG2J7qc0A==
-9M0sHQRn3fpq0pKI6dAjRg==
-oIx2ZYhYyxk=
-qxTfCy8x2ik=
-07DuDDhO4jkaMWEdQab8gA==
-dYNoJdOApK5q0pKI6dAjRg==
-IWL0Oj7ADB0=
-ZOEecSvxtC8=
-YOZTGnXDvadsvxdkUUultA==
-UQVK32p0OFbpSPMVrsDEgw==
-uWk7ACrYHFJq0pKI6dAjRg==
-wqW+L7C1QfI=
-FuqufNWLbz4aMWEdQab8gA==
-Ew/dIjaEJ2Nq0pKI6dAjRg==
-NbhJ7n5EBuM=
-bjWtH3otC6o=
-+USosVem/aJq0pKI6dAjRg==
-BvUQsO1TZjQaMWEdQab8gA==
-dLvaeSicmePpSPMVrsDEgw==
-2s+Nci9wvwcaMWEdQab8gA==
-/ZBZNOiYzE8aMWEdQab8gA==
-luhIdIGyt96ghPBEKYKOCQ==
-d7ksvB02K9aL+e/gbkRInQ==
-mm3ggun0m48=
-Eup7Iju4x08=
-SXcydPTAZ4YaMWEdQab8gA==
-3UxZsrlCq+Nq0pKI6dAjRg==
-QM3KQcMrUkI=
-KTs7zu78+7aWVvDbfVHH+w==
-KTs7zu78+7Z2csObNB5GdBpJDSKGQ5Nk
-+d4AfQta4L5q0pKI6dAjRg==
-HkUomzY3KJY=
-W5PUfdnc7Pw=
-cchXAGqWaFQaMWEdQab8gA==
-/B0ln0yF54Zq0pKI6dAjRg==
-RNUTN8me5q0aMWEdQab8gA==
-4/QeAGcSSrHpSPMVrsDEgw==
-hU2JsvCVd8gaMWEdQab8gA==
-xESGSvIVdxVq0pKI6dAjRg==
-CLKhNPrdK9YaMWEdQab8gA==
-nhtgaNgOsSe/WZ1+qt48kw==
-MkfhBWQmHjUaMWEdQab8gA==
-FPTfIIgfgBighPBEKYKOCQ==
-eXnY/Qg3yKU=
-D6nQ62orkv8=
-am6mi0e3+dlq0pKI6dAjRg==
-6qWbsFylfS5q0pKI6dAjRg==
-D+KYFTHzIUqghPBEKYKOCQ==
-JfNtumkrZmwaMWEdQab8gA==
-OhfCK/7YoDMaMWEdQab8gA==
-uAUhGcz2XWNq0pKI6dAjRg==
-9pzYhs9wWQoaMWEdQab8gA==
-9xziAfY5zfc=
-DH2VViKrbzkaMWEdQab8gA==
-cCyOhx2F/+W/WZ1+qt48kw==
-vuA/gXDqzAc=
-jryElcwKEMMaMWEdQab8gA==
-933rTvG15utEbEV59VU69w==
-C/TJ70+aNzqghPBEKYKOCQ==
-+T2ENvG7ulOghPBEKYKOCQ==
-+Ts5tEdthls=
-BTPWTevtxY8=
-bAvcVi4Iw6vpSPMVrsDEgw==
-gJq/yMRPk7gaMWEdQab8gA==
-8+/D6NypjdcaMWEdQab8gA==
-j0TGUFfUltwaMWEdQab8gA==
-w2CmHbWfJVI=
-C1b2yHS3+1QaMWEdQab8gA==
-RRR85iCoWWa/WZ1+qt48kw==
-kQFfa2bQHya/WZ1+qt48kw==
-FMXGCecU7OgaMWEdQab8gA==
-gG7DNKeNv9Vq0pKI6dAjRg==
-gG7DNKeNv9V4eMxTN13cAA==
-45cP/YqamBcaMWEdQab8gA==
-o40XnNQJ577Db3Oiq61FFg==
-cGTBLHk6/fxq0pKI6dAjRg==
-rrBNizBesucaMWEdQab8gA==
-ghSbmaLOO98aMWEdQab8gA==
-tF1pgJyo250aMWEdQab8gA==
-eGz28sziaVmghPBEKYKOCQ==
-zLVw5YczNHPpSPMVrsDEgw==
-R7v8iMqokEk=
-3w3MNEwTHk8aMWEdQab8gA==
-Xh3FKtdlhYy/WZ1+qt48kw==
-VIR00cdqqh0aMWEdQab8gA==
-RtC8zrx8egoaMWEdQab8gA==
-RiaKh/IQuaWghPBEKYKOCQ==
-9dso1o9+OM7s0sESQOYMkQ==
-ODU2O9saeM8aMWEdQab8gA==
-4BWPVwg3+jE=
-1eviNsbwnWxq0pKI6dAjRg==
-kDqtfeqQPDk=
-nZmQN7UbdAkaMWEdQab8gA==
-w4o2Z1lmVCg=
-ROkmk9MfDg8=
-JAfNtwJYV7saMWEdQab8gA==
-BeR0O3AurD4aMWEdQab8gA==
-7bA6trZEB8Q=
-si2t3a0KltRq0pKI6dAjRg==
-30WhMafI/yRq0pKI6dAjRg==
-vbGJne6FBZZq0pKI6dAjRg==
-9eeSihWwS76ghPBEKYKOCQ==
-eYrwlVYgQAsaMWEdQab8gA==
-6RmR/b9Obm6+AlTuumOl8Q==
-v/xMaaaT67tq0pKI6dAjRg==
-PkcmzsDUn16ghPBEKYKOCQ==
-gQV2OIMpEa8=
-C4enA8t9NfughPBEKYKOCQ==
-sr6bT6RKsitq0pKI6dAjRg==
-shI0WR1d09lq0pKI6dAjRg==
-2lpnzUoHMZSghPBEKYKOCQ==
-t+vxIjsI+jk=
-orFEvaQa0+AaMWEdQab8gA==
-Oetnwc0uUuUaMWEdQab8gA==
-d+882G/9KZEaMWEdQab8gA==
-z18Z0KDhGc4aMWEdQab8gA==
-EQW0OqsfNyEaMWEdQab8gA==
-H/372TJs4CgaMWEdQab8gA==
-2bg5JuTZYIZq0pKI6dAjRg==
-yozTkiKRt4w=
-eKLkFWM6lzO3npMo5tbzcg==
-bAOo+NrlnbighPBEKYKOCQ==
-DnrPIT/NOXI=
-4bDoLuz/AcSghPBEKYKOCQ==
-3JIpDnKrjdQaMWEdQab8gA==
-eWiAe5WTtz2ghPBEKYKOCQ==
-eE0eljGAWzoaMWEdQab8gA==
-/Ejs9xtVoJMaMWEdQab8gA==
-t5KJeZlZmszpSPMVrsDEgw==
-pVtlpklJukEaMWEdQab8gA==
-bKuUJ1epVUIaMWEdQab8gA==
-jgggdlL4muwaMWEdQab8gA==
-yYXcSsgwrg0aMWEdQab8gA==
-D0VZbLCI1TfpSPMVrsDEgw==
-fcTTwro3YPQaMWEdQab8gA==
-iuOCz6g1KhoaMWEdQab8gA==
-PsCXZRRLpTwaMWEdQab8gA==
-mrTtqKiM7D4aMWEdQab8gA==
-WM+hHqXm3roaMWEdQab8gA==
-fzQYZN7/Rp9q/dtjqADINg==
-ihFTlu1A6vIaMWEdQab8gA==
-9a1laFGjHo4aMWEdQab8gA==
-pF5N7sNda/QfyvOlpVTYWw==
-lW78Te9RjDE=
-G/1hbXprw9dq0pKI6dAjRg==
-u5kffeqLBwPb0/KEsrHb8w==
-sHSQOF0FvoC/WZ1+qt48kw==
-lLLr/uleASxq0pKI6dAjRg==
-Jo7ZM1oqGYoHjnX6dZF4Ew==
-issCvda36VJq0pKI6dAjRg==
-MtZYI/SxET8aMWEdQab8gA==
-6NOR1xwgrN4ZORR0TS8CTA==
-MGWoblWPeYNq0pKI6dAjRg==
-M7Z7ACPbCYFq0pKI6dAjRg==
-gvFsVXWZ7xc=
-aNXnTRhWOXA=
-898sulSjrhsj0xRUKyJr6A==
-APJT1toXTI6ghPBEKYKOCQ==
-Zj8xCLo0bk0aMWEdQab8gA==
-oiark/oywiK/WZ1+qt48kw==
-ApmEtMU6smIaMWEdQab8gA==
-pF+/2e5PCdgaMWEdQab8gA==
-sBgQBxYnmE8aMWEdQab8gA==
-tMp4JIy5a04aMWEdQab8gA==
-CsXFicbJvlS/WZ1+qt48kw==
-NhQ4s9J9XLW/WZ1+qt48kw==
-9LATiUgcdYi/WZ1+qt48kw==
-Ps0XYfFQ7g9q0pKI6dAjRg==
-xEHYC5PyimMaMWEdQab8gA==
-MmnONpzqj5YaMWEdQab8gA==
-usiV5tUbJPu/WZ1+qt48kw==
-3dB8ErzNVUC/WZ1+qt48kw==
-D3rFOPHTe6gaMWEdQab8gA==
-sPozkzJeO5QaMWEdQab8gA==
-BtOmpkWBQ4HpSPMVrsDEgw==
-PAjGL/UtmZRq0pKI6dAjRg==
-iKEaZ4FNNBW+AlTuumOl8Q==
-JAcPDQQ5IPs=
-vK8zo9f7Vfpq0pKI6dAjRg==
-Ldy6xov8vecaMWEdQab8gA==
-G4CG0zT9XI8aMWEdQab8gA==
-hS36/7wW1bIaMWEdQab8gA==
-tutXZSHjydYaMWEdQab8gA==
-9RSWCfix/bc=
-4BP6hjD4LyQ=
-rWtUOxHL5iAaMWEdQab8gA==
-EBIeu3DhNJtq0pKI6dAjRg==
-BsaRDUgaEH0=
-DHLT8UBzyDZq0pKI6dAjRg==
-zK3IJj4OCNIaMWEdQab8gA==
-lCrj7iocLJET950+ObWWMA==
-4EAa7rXXi9rpSPMVrsDEgw==
-yM/XklsMud0dF1YvrBdS2A==
-cxIZrq1MlLrtUpGJ52qpCg==
-Sw6IG9Roqdo6rgW0oOWrmg==
-Sw6IG9RoqdqQ1ZQuaxFH5g==
-Cec4J6QStebLjHoBBeC6Ww==
-1caEzMu1CUkaMWEdQab8gA==
-ZtKdu9HHJTA=
-pQpvrfs9itG/WZ1+qt48kw==
-7D8VdYPWvGBq0pKI6dAjRg==
-HCEq+yB3xiQaMWEdQab8gA==
-pbmV6usba1tq0pKI6dAjRg==
-cvMgig+0E/Vq0pKI6dAjRg==
-aKGgMCtUVXQ=
-8vFzRLfciaRq0pKI6dAjRg==
-Z5ZFEvbeawzs0sESQOYMkQ==
-iqIC0HGzbohq0pKI6dAjRg==
-QIca9jyM5X0=
-d3dBmbGSwkNq0pKI6dAjRg==
-7opvcLdtzDwaMWEdQab8gA==
-2j7TI2J4r6gaMWEdQab8gA==
-4PY37beFCVBq0pKI6dAjRg==
-sdyv+x7cRTnpSPMVrsDEgw==
-j4gk7NdCTkm+AlTuumOl8Q==
-Y1P+gxnHrTSghPBEKYKOCQ==
-R2aBTn/xDasaMWEdQab8gA==
-hlz0ecMpnC4aMWEdQab8gA==
-clAIS6TCz6PYaoRrnw0lXQ==
-nPD9uNpiPe1q0pKI6dAjRg==

+ 10 - 0
public/src/main/java/com/lantone/qc/pub/model/entity/Aggravate.java

@@ -0,0 +1,10 @@
+package com.lantone.qc.pub.model.entity;
+
+/**
+ * @ClassName : Aggravate
+ * @Description : 加重因素
+ * @Author : 楼辉荣
+ * @Date: 2020-03-18 18:59
+ */
+public class Aggravate extends General {
+}

+ 10 - 0
public/src/main/java/com/lantone/qc/pub/model/entity/BeHospitalizedWay.java

@@ -0,0 +1,10 @@
+package com.lantone.qc.pub.model.entity;
+
+/**
+ * @ClassName : BeHospitalizedWay
+ * @Description : 入院途径
+ * @Author : 楼辉荣
+ * @Date: 2020-03-18 19:05
+ */
+public class BeHospitalizedWay extends General {
+}

+ 3 - 0
public/src/main/java/com/lantone/qc/pub/model/entity/Clinical.java

@@ -18,6 +18,9 @@ public class Clinical extends General {
     private Degree degree;//程度
     private Modification modification;//修饰
     private Cause cause;
+    private Property property;//性质
+    private Aggravate aggravate;//加重因素
+    private Relief relief;//缓解因素
     private PD pds;
     private List<PD> timestamp;
 }

+ 10 - 0
public/src/main/java/com/lantone/qc/pub/model/entity/Property.java

@@ -0,0 +1,10 @@
+package com.lantone.qc.pub.model.entity;
+
+/**
+ * @ClassName : Property
+ * @Description : 性质
+ * @Author : 楼辉荣
+ * @Date: 2020-03-18 18:59
+ */
+public class Property extends General {
+}

+ 10 - 0
public/src/main/java/com/lantone/qc/pub/model/entity/Relief.java

@@ -0,0 +1,10 @@
+package com.lantone.qc.pub.model.entity;
+
+/**
+ * @ClassName : Relief
+ * @Description : 缓解因素
+ * @Author : 楼辉荣
+ * @Date: 2020-03-18 19:00
+ */
+public class Relief extends General {
+}

+ 10 - 3
public/src/main/java/com/lantone/qc/pub/model/label/PresentLabel.java

@@ -4,6 +4,7 @@ import com.lantone.qc.pub.model.entity.*;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -16,7 +17,7 @@ import java.util.List;
 @Setter
 public class PresentLabel extends GeneralLabel {
     //临床表现
-    private List<Clinical> clinicals;
+    private List<Clinical> clinicals = new ArrayList<>();
     //辅助检查
     private List<Pacs> pacses;
     //化验
@@ -25,6 +26,12 @@ public class PresentLabel extends GeneralLabel {
     private List<Treat> treats;
     //一般情况
     private List<GeneralDesc> generals;
-    //诊断
-    private List<Diag> diags;
+    //疾病信息
+    private List<Diag> diags = new ArrayList<>();
+    //入院途径
+    private BeHospitalizedWay beHospitalizedWay;
+
+    public <T> void add(List<T> list, T obj) {
+        list.add(obj);
+    }
 }