Преглед на файлове

Merge branch 'master' of http://192.168.2.236:10080/louhr/qc

louhr преди 5 години
родител
ревизия
0f28d57dec
променени са 16 файла, в които са добавени 473 реда и са изтрити 35 реда
  1. 9 12
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0001.java
  2. 23 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0002.java
  3. 35 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0003.java
  4. 36 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0004.java
  5. 29 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0005.java
  6. 54 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0006.java
  7. 56 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0007.java
  8. 38 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0008.java
  9. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0009.java
  10. 54 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0010.java
  11. 31 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0011.java
  12. 25 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0012.java
  13. 25 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0013.java
  14. 2 11
      kernel/src/main/java/com/lantone/qc/kernel/structure/ai/BeHospitalizedAI.java
  15. 15 11
      kernel/src/main/java/com/lantone/qc/kernel/structure/ai/process/EntityProcessClinic.java
  16. 7 1
      kernel/src/main/java/com/lantone/qc/kernel/util/CatalogueUtil.java

+ 9 - 12
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0001.java

@@ -1,18 +1,14 @@
 package com.lantone.qc.kernel.catalogue.behospitalized;
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
-import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.entity.Clinical;
 import com.lantone.qc.pub.model.entity.PD;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
+
 
 /**
  * @ClassName : BEH0001
@@ -23,7 +19,7 @@ import java.util.Map;
 @Component
 public class BEH0001 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        Map<String,String> statusMap = new HashMap<>();
+
         String status = "0";
         String infos = "";
         List<Clinical> clinicals = inputInfo.getBeHospitalizedDoc().getChiefLabel().getClinicals();
@@ -32,17 +28,18 @@ public class BEH0001 extends QCCatalogue {
                 String clinicalName = clinical.getName();
                 List<PD> timestamp = clinical.getTimestamp();
                 if(timestamp == null){
-                    infos = infos+","+clinicalName;
+                    if(StringUtils.isEmpty(infos)){
+                        infos = clinicalName;
+                    }else {
+                        infos = infos+","+clinicalName;
+                    }
                 }
             }
         }
         if(StringUtils.isNotEmpty(infos)){
             status = "-1";
         }
-        statusMap.put("status",status);
-        statusMap.put("info",infos);
-        Map<String, Map<String, String>> result = outputInfo.getResult();
-        result.put("BEH0001",statusMap);
-        outputInfo.setResult(result);
+        resultDetail.put("status",status);
+        resultDetail.put("info",infos);
     }
 }

+ 23 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0002.java

@@ -0,0 +1,23 @@
+package com.lantone.qc.kernel.catalogue.behospitalized;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.entity.Clinical;
+import com.lantone.qc.pub.model.entity.PD;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+
+/**
+ * @ClassName : BEH0002
+ * @Description : 主诊断与主诉不符
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH0002 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {}
+}

+ 35 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0003.java

@@ -0,0 +1,35 @@
+package com.lantone.qc.kernel.catalogue.behospitalized;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.entity.Clinical;
+import com.lantone.qc.pub.model.entity.PD;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+
+/**
+ * @ClassName : BEH0003
+ * @Description : 主诉字数超过20个字
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH0003 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        String status = "0";
+        String infos = "";
+        String chief_text = inputInfo.getBeHospitalizedDoc().getChiefLabel().getText();
+        if(CatalogueUtil.removeSpecialChar(chief_text).length()>20)
+        {
+            status = "-1";
+        }
+        resultDetail.put("status",status);
+        resultDetail.put("info",infos);
+    }
+}

+ 36 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0004.java

@@ -0,0 +1,36 @@
+package com.lantone.qc.kernel.catalogue.behospitalized;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import org.springframework.stereotype.Component;
+
+import java.util.Collection;
+import java.util.Map;
+
+
+/**
+ * @ClassName : BEH0004
+ * @Description : 入院记录个人基本信息缺项或信息错误
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH0004 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        String status = "0";
+        String infos = "";
+        Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+        Collection<String> values = structureMap.values();
+        for (String value:values
+             ) {
+            if(CatalogueUtil.isEmpty(value)){
+                status = "-1";
+            }
+        }
+        resultDetail.put("status",status);
+        resultDetail.put("info",infos);
+    }
+}

+ 29 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0005.java

@@ -0,0 +1,29 @@
+package com.lantone.qc.kernel.catalogue.behospitalized;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import org.springframework.stereotype.Component;
+
+import java.util.Collection;
+import java.util.Map;
+
+
+/**
+ * @ClassName : BEH0005
+ * @Description :主诉症状时间描述前后不合理
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH0005 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        String status = "0";
+        String infos = "";
+
+        resultDetail.put("status",status);
+        resultDetail.put("info",infos);
+    }
+}

+ 54 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0006.java

@@ -0,0 +1,54 @@
+package com.lantone.qc.kernel.catalogue.behospitalized;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.entity.Clinical;
+import com.lantone.qc.pub.model.entity.PD;
+import com.lantone.qc.pub.model.label.ChiefLabel;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * @ClassName : BEH0006
+ * @Description :主诉症状缺少近期事件描述
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH0006 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        String status = "0";
+        String infos = "";
+        ChiefLabel chiefLabel = inputInfo.getBeHospitalizedDoc().getChiefLabel();
+        String chief_text = chiefLabel.getText();
+        if(chief_text.contains("年")){
+            List<Clinical> clinicals = chiefLabel.getClinicals();
+            if(clinicals.size()>0){
+                List<String> unitList = new ArrayList<>();
+                for (Clinical clinical:clinicals) {
+                    List<PD> timestamp = clinical.getTimestamp();
+                    if(timestamp != null){
+                        for (PD pd:timestamp) {
+                            if(!CatalogueUtil.isEmpty(pd.getUnit())){
+                                unitList.add(pd.getUnit());
+                            }
+                        }
+                    }
+
+                }
+                if(!unitList.contains("天")){
+                    status = "-1";
+                }
+            }
+        }
+        resultDetail.put("status",status);
+        resultDetail.put("info",infos);
+    }
+}

+ 56 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0007.java

@@ -0,0 +1,56 @@
+package com.lantone.qc.kernel.catalogue.behospitalized;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.entity.Clinical;
+import com.lantone.qc.pub.model.entity.PD;
+import com.lantone.qc.pub.model.label.ChiefLabel;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+
+/**
+ * @ClassName : BEH0007
+ * @Description :主诉症状时间描述模糊
+ * 主诉中不能出现数天,数月,数年等带“数”字这种描述,如果出现,均视为模糊不清
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH0007 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        String status = "0";
+        String infos = "";
+        ChiefLabel chiefLabel = inputInfo.getBeHospitalizedDoc().getChiefLabel();
+        List<Clinical> clinicals = chiefLabel.getClinicals();
+        Set<String> clinicalSet = new HashSet<>();
+        if(clinicals.size()>0){
+            for (Clinical clinical:clinicals) {
+                String clinicalName = clinical.getName();
+                List<PD> clinicalTimestamp = clinical.getTimestamp();
+                if(clinicalTimestamp.size()>0){
+                    for (PD pd:clinicalTimestamp) {
+                        if(StringUtils.isEmpty(pd.getUnit())){
+                            clinicalSet.add(clinicalName);
+                        }
+                    }
+                }
+            }
+        }
+        if(clinicalSet.size()>0){
+            status = "-1";
+            infos = clinicalSet.toString().replace("[","").replace("]","");
+        }
+
+        resultDetail.put("status",status);
+        resultDetail.put("info",infos);
+    }
+}

+ 38 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0008.java

@@ -0,0 +1,38 @@
+package com.lantone.qc.kernel.catalogue.behospitalized;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.entity.Clinical;
+import com.lantone.qc.pub.model.entity.PD;
+import com.lantone.qc.pub.model.label.ChiefLabel;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+
+/**
+ * @ClassName : BEH0008
+ * @Description :主诉症状超过3个
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH0008 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        String status = "0";
+        String infos = "";
+        ChiefLabel chiefLabel = inputInfo.getBeHospitalizedDoc().getChiefLabel();
+        List<Clinical> clinicals = chiefLabel.getClinicals();
+        if(clinicals.size()>3){
+            status = "-1";
+        }
+
+        resultDetail.put("status",status);
+        resultDetail.put("info",infos);
+    }
+}

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0009.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.behospitalized;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.entity.Clinical;
+import com.lantone.qc.pub.model.label.ChiefLabel;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+
+/**
+ * @ClassName : BEH0009
+ * @Description :主诉中缺少主症状
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH0009 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        String status = "0";
+        String infos = "";
+        ChiefLabel chiefLabel = inputInfo.getBeHospitalizedDoc().getChiefLabel();
+        List<Clinical> clinicals = chiefLabel.getClinicals();
+        if(clinicals.size()<= 0 || clinicals == null){
+            status = "-1";
+        }
+
+        resultDetail.put("status",status);
+        resultDetail.put("info",infos);
+    }
+}

+ 54 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0010.java

@@ -0,0 +1,54 @@
+package com.lantone.qc.kernel.catalogue.behospitalized;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.entity.Clinical;
+import com.lantone.qc.pub.model.entity.Diag;
+import com.lantone.qc.pub.model.label.ChiefLabel;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.Iterator;
+import java.util.List;
+
+
+/**
+ * @ClassName : BEH0010
+ * @Description : 主诉中出现诊断名称(病理确诊:如肿瘤疾病、再入院除外)
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH0010 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        String status = "0";
+        String infos = "";
+        ChiefLabel chiefLabel = inputInfo.getBeHospitalizedDoc().getChiefLabel();
+        List<Diag> diags = chiefLabel.getDiags();
+        if(diags.size()>0){
+            Iterator<Diag> diagIterator = diags.iterator();
+            while (diagIterator.hasNext()){
+                Diag diag = diagIterator.next();
+                String diagName = diag.getName();
+                if(diagName.contains("癌") || diagName.contains("瘤") || diagName.contains("复诊")){
+                    diagIterator.remove();
+                }
+            }
+        }
+        if(diags.size()>0){
+            status = "-1";
+            for (Diag diag:diags) {
+                if(StringUtils.isEmpty(infos)){
+                    infos = diag.getName();
+                }else {
+                    infos = infos+","+diag.getName();
+                }
+            }
+        }
+
+        resultDetail.put("status",status);
+        resultDetail.put("info",infos);
+    }
+}

+ 31 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0011.java

@@ -0,0 +1,31 @@
+package com.lantone.qc.kernel.catalogue.behospitalized;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.entity.Diag;
+import com.lantone.qc.pub.model.label.ChiefLabel;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.Iterator;
+import java.util.List;
+
+
+/**
+ * @ClassName : BEH0011
+ * @Description : 入院诊断不完整
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH0011 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        String status = "0";
+        String infos = "";
+
+        resultDetail.put("status",status);
+        resultDetail.put("info",infos);
+    }
+}

+ 25 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0012.java

@@ -0,0 +1,25 @@
+package com.lantone.qc.kernel.catalogue.behospitalized;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * @ClassName : BEH0012
+ * @Description :  入院诊断名称不标准
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH0012 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        String status = "0";
+        String infos = "";
+
+        resultDetail.put("status",status);
+        resultDetail.put("info",infos);
+    }
+}

+ 25 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0013.java

@@ -0,0 +1,25 @@
+package com.lantone.qc.kernel.catalogue.behospitalized;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * @ClassName : BEH0013
+ * @Description :  现病史缺少有鉴别意义的阴性症状
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH0013 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        String status = "0";
+        String infos = "";
+
+        resultDetail.put("status",status);
+        resultDetail.put("info",infos);
+    }
+}

+ 2 - 11
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/BeHospitalizedAI.java

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.lantone.qc.kernel.client.CRFServiceClient;
 import com.lantone.qc.kernel.structure.ai.model.CrfOut;
 import com.lantone.qc.kernel.structure.ai.process.*;
+import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.Content;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
@@ -40,8 +41,6 @@ public class BeHospitalizedAI {
     public static String outputs = "outputs";
 
     public void medrec(InputInfo inputInfo,CRFServiceClient crfServiceClient){
-
-        Map<String,List<CrfOut>> crfOut = new HashMap<>();//主诉-->
         JSONArray crfContent = new JSONArray();
         BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
         String chief_text = beHospitalizedDoc.getChiefLabel().getText();
@@ -261,7 +260,7 @@ public class BeHospitalizedAI {
     }
 
     public void putContent(JSONArray crfContent, String medicalTextType, String text,String sign){
-        String move_text = this.moveSpecialSymbols(text);
+        String move_text = CatalogueUtil.removeSpecialChar(text);
         if (StringUtil.isEmpty(move_text)) {
             return;
         }
@@ -301,12 +300,4 @@ public class BeHospitalizedAI {
         }
         return midData;
     }
-    //文本去除\r\n\t特殊符号
-    public String moveSpecialSymbols(String content){
-        if (StringUtil.isEmpty(content)){
-            return "";
-        }
-        return content.replaceAll("\\r\\n|/r/n", "\r\n")
-                .replaceAll("\\t", "\t").trim();
-    }
 }

+ 15 - 11
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/process/EntityProcessClinic.java

@@ -22,6 +22,7 @@ public class EntityProcessClinic extends EntityProcess {
                 continue;
             }
             clinical = new Clinical();
+            List<PD> timestamp = new ArrayList<>();
             for (String key : clinicalEntityEntry.keySet()) {
                 String entity = StringUtils.isEmpty(clinicalEntityEntry.get(key)) ? "" : clinicalEntityEntry.get(key);
                 switch (EntityEnum.parseOfValue(key)){
@@ -37,30 +38,33 @@ public class EntityProcessClinic extends EntityProcess {
                         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:
-                        List<PD> timestamp = new ArrayList<>();
-                        PD pd = new PD();
-                        String[] val_unit = new String[2];
-                        if(entity.trim().length()>0){
-                            val_unit = extract_digit(entity);
+                        String[] time_split = entity.split(",");
+                        for (String time:time_split) {
+                            PD pd = new PD();
+                            String[] val_unit = new String[2];
+                            if(time.trim().length()>0){
+                                val_unit = extract_digit(time);
+                            }
+                            pd.setValue(val_unit[0]);
+                            pd.setUnit(val_unit[1]);
+                            timestamp.add(pd);
                         }
-                        pd.setValue(val_unit[0]);
-                        pd.setUnit(val_unit[1]);
-                        timestamp.add(pd);
-                        clinical.setTimestamp(timestamp);
                         break;
-
                 }
-
             }
+            clinical.setTimestamp(timestamp);
             clinicals.add(clinical);
         }
         return clinicals;

+ 7 - 1
kernel/src/main/java/com/lantone/qc/kernel/util/CatalogueUtil.java

@@ -24,6 +24,12 @@ public class CatalogueUtil {
 
 
     public static boolean isEmpty(String content) {
-        return StringUtil.isBlank(content.replaceAll("[\r\n|/r/n|\n|/n|/t]", ""));
+        return StringUtil.isBlank(removeSpecialChar(content));
+    }
+    public static String removeSpecialChar(String content) {
+        if (StringUtil.isEmpty(content)){
+            return "";
+        }
+        return content.replaceAll("[\r\n|/r/n|\n|/n|/t|\t]", "").trim();
     }
 }