Browse Source

Merge branch 'dev-shaoyf' into dev

wangfeng 5 years atrás
parent
commit
d96b916ca6

+ 40 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH03002.java

@@ -0,0 +1,40 @@
+package com.lantone.qc.kernel.catalogue.behospitalized;
+
+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.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * @author wangfeng
+ * @Description: 入院时间错误(具体到分)
+ * @date 2020-06-29 11:44
+ */
+@Component
+public class BEH03002 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+        if (structureMap != null) {
+            String dateStr = structureMap.get(Content.admisDate);
+            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+            try {
+                Date d = formatter.parse(dateStr);
+                status.set("0");
+            } catch (Exception e) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 40 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH03003.java

@@ -0,0 +1,40 @@
+package com.lantone.qc.kernel.catalogue.behospitalized;
+
+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 org.springframework.stereotype.Component;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2020-06-29 15:19
+ */
+@Component
+public class BEH03003 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+        if (structureMap != null) {
+            String dateStr = structureMap.get("记录日期");
+            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+            try {
+                Date d = formatter.parse(dateStr);
+                status.set("0");
+            } catch (Exception e) {
+                status.set("-1");
+                return;
+            }
+        }
+
+    }
+}

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0450.java

@@ -28,7 +28,7 @@ public class BEH0450 extends QCCatalogue {
             return;
         }
         double likeRate = firstCourseRecordDoc.getCaseCharacteristicLabel().getLikeRate();
-        if (likeRate > 0.8d) {
+        if (likeRate > 0.95d) {
             status.set("-1");
         }
     }

+ 49 - 33
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAC0097.java

@@ -1,34 +1,50 @@
-package com.lantone.qc.kernel.catalogue.deathcasediscuss;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-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.OutputInfo;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-/**
- * @ClassName : DEAC0097
- * @Description : 死亡患者无死亡记录
- * @Author : 楼辉荣
- * @Date: 2020-03-06 17:28
- */
-@Component
-public class DEAC0097 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
-            Map<String, String> FirstPageStructure = inputInfo.getFirstPageRecordDoc().getStructureMap();
-            String outWay = FirstPageStructure.get(Content.outWay);
-            //判断患者是否死亡
-            if (CatalogueUtil.isEmpty(outWay) || !outWay.contains("死亡")) {
-                return;
-            }
-            if (inputInfo.getDeathRecordDoc() == null || inputInfo.getDeathRecordDoc().getStructureMap().size() == 0){
-                status.set("-1");
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.deathcasediscuss;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+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.OutputInfo;
+import com.lantone.qc.pub.model.doc.DoctorAdviceDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : DEAC0097
+ * @Description : 死亡患者无死亡记录
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class DEAC0097 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<String> deathRecords = new ArrayList<>();
+        List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
+        if (doctorAdviceDocs.size() == 0 ) {
+            return;
+        }
+        for (DoctorAdviceDoc dad:doctorAdviceDocs) {
+            if(dad.getStructureMap().get("医嘱项目名称").contains("死亡")){
+                deathRecords.add(dad.getStructureMap().get("医嘱项目名称"));
+            }
+        }
+        if(deathRecords != null && deathRecords.size()>0 && inputInfo.getDeathRecordDoc() == null){
+            status.set("-1");
+        }
+        /*if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, String> FirstPageStructure = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String outWay = FirstPageStructure.get(Content.outWay);
+            //判断患者是否死亡
+            if (CatalogueUtil.isEmpty(outWay) || !outWay.contains("死亡")) {
+                return;
+            }
+            if (inputInfo.getDeathRecordDoc() == null || inputInfo.getDeathRecordDoc().getStructureMap().size() == 0){
+                status.set("-1");
+            }
+        }*/
+    }
 }

+ 34 - 33
kernel/src/main/java/com/lantone/qc/kernel/catalogue/deathcasediscuss/DEAC0108.java

@@ -1,34 +1,35 @@
-package com.lantone.qc.kernel.catalogue.deathcasediscuss;
-
-import com.lantone.qc.kernel.catalogue.QCCatalogue;
-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.OutputInfo;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-/**
- * @ClassName : DEAC0108
- * @Description : 死亡患者无死亡病例讨论记录
- * @Author : 胡敬
- * @Date: 2020-03-19 11:24
- */
-@Component
-public class DEAC0108 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
-            Map<String, String> FirstPageStructure = inputInfo.getFirstPageRecordDoc().getStructureMap();
-            String outWay = FirstPageStructure.get(Content.outWay);
-            //判断患者是否死亡
-            if (CatalogueUtil.isEmpty(outWay) || !outWay.contains("死亡")) {
-                return;
-            }
-            if (inputInfo.getDeathCaseDiscussDoc() == null || inputInfo.getDeathCaseDiscussDoc().getStructureMap().size() == 0){
-                status.set("-1");
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.deathcasediscuss;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+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.OutputInfo;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : DEAC0108
+ * @Description : 死亡患者无死亡病例讨论记录
+ * @Author : 胡敬
+ * @Date: 2020-03-19 11:24
+ */
+@Component
+public class DEAC0108 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, String> FirstPageStructure = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String outWay = FirstPageStructure.get(Content.outWay);
+            //判断患者是否死亡
+            if (CatalogueUtil.isEmpty(outWay) || !outWay.contains("死亡")) {
+                return;
+            }
+            if ((inputInfo.getDeathCaseDiscussDoc() == null || inputInfo.getDeathCaseDiscussDoc().getStructureMap().size() == 0)
+            && outWay.contains("死亡")){
+                status.set("-1");
+            }
+        }
+    }
 }

+ 30 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC02998.java

@@ -0,0 +1,30 @@
+package com.lantone.qc.kernel.catalogue.firstcourserecord;
+
+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;
+
+import java.util.Map;
+
+/**
+ * @ClassName : FIRC02998
+ * @Description : 首程无A审核签名
+ * @Author : rengb
+ * @Date: 2020-06-16 17:36
+ */
+@Component
+public class FIRC02998 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstCourseRecordDoc() == null) {
+            return;
+        }
+        Map<String, String> firstCourseRecordStructureMap = inputInfo.getFirstCourseRecordDoc().getStructureMap();
+        String docName = firstCourseRecordStructureMap.get("审核人");
+        if (!docName.endsWith("A")) {
+            status.set("-1");
+        }
+    }
+
+}

+ 45 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02992.java

@@ -0,0 +1,45 @@
+package com.lantone.qc.kernel.catalogue.firstpagerecord;
+
+import com.google.common.collect.Lists;
+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.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP02992
+ * @Description : 药物过敏与既往史不一致(结构化数据)
+ * @Author : rengb
+ * @Date: 2020-03-18 14:07
+ */
+@Component
+public class FIRP02992 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getBeHospitalizedDoc() != null) {
+            Map<String, String> fpStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String fpDrugAllergy = fpStructureMap.get(Content.drugAllergy);
+            fpDrugAllergy = StringUtil.isBlank(fpDrugAllergy) ? "" : fpDrugAllergy;
+
+            Map<String, String> beStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+            String beDrugAllergy = beStructureMap.get("过敏史");
+            beDrugAllergy = StringUtil.isBlank(beDrugAllergy) ? "" : beDrugAllergy;
+
+            if (!fpDrugAllergy.equals(beDrugAllergy)) {
+                String regx = ";|;|,|,|、| ";
+                List<String> fpList = Lists.newArrayList(fpDrugAllergy.split(regx));
+                List<String> beList = Lists.newArrayList(beDrugAllergy.split(regx));
+                if (!ListUtil.equals(fpList, beList)) {
+                    status.set("-1");
+                }
+            }
+        }
+    }
+
+}

+ 76 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02993.java

@@ -0,0 +1,76 @@
+package com.lantone.qc.kernel.catalogue.firstpagerecord;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.ClearBracketUtil;
+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.operation.OperationDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 病案首页手术名称未填
+ * @author wangfeng
+ * @Description:
+ * @date 2020-06-28 17:10
+ */
+@Component
+public class FIRP02993 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            //取出病程信息里的手术记录的名称
+            List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+            if (!operationDocs.isEmpty()) {
+                List<String> nameberList = new ArrayList<String>();
+                for (OperationDoc operationDoc : operationDocs
+                ) {
+                    String str = operationDoc.getOperationDiscussionDoc().getStructureMap().get(Content.operative_name);//手术名称
+                    String s = ClearBracketUtil.ClearBracket(str);
+                    String[] digitalSplit = s.split("[\\+|,|、|,]");
+                    for (int i = 0; i < digitalSplit.length; i++) {
+                        if (!digitalSplit[i].equals("")) {
+                            nameberList.add(digitalSplit[i]);
+                        }
+                    }
+                }
+                //取出病案首页里的手术名称operationNameList;
+                Map<String, Object> structureExtMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
+                Object operation = structureExtMap.get(Content.operative_information);//手术信息
+                List<String> operationNameList = new ArrayList<String>();
+                List<Map<String, String>> mapStrs = (List<Map<String, String>>) operation;
+                if (mapStrs.size() > 0) {
+                    for (Map<String, String> mapStr : mapStrs
+                    ) {
+                        String name = mapStr.get(Content.operative_name);//手术名称
+                        operationNameList.add(name);
+                    }
+                    //病程信息里的手术记录的名称 和 病案首页里的手术名称 对比, 找不到则报错!
+                    for (String str1 : nameberList) {
+                        int sun = 0;
+                        for (String str2 : operationNameList) {
+                            if (str2.indexOf(str1) != -1) {
+                                sun++;
+                            }
+                        }
+                        if (sun == 0) {
+                            status.set("-1");
+                            return;
+                        }
+                    }
+                } else {
+                    status.set("-1");
+                    return;
+                }
+
+            }
+
+        }
+    }
+
+
+}

+ 14 - 10
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA0149.java

@@ -9,6 +9,7 @@ import com.lantone.qc.pub.model.doc.DeathRecordDoc;
 import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
 import com.lantone.qc.pub.model.label.ChiefLabel;
 import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -66,18 +67,21 @@ public class LEA0149 extends QCCatalogue {
                 status.set("0");
                 return;
             }
-            Pattern compile = Pattern.compile("(?<=2.).*(?=3.体格检查)");
-            Matcher matcher = compile.matcher(bhThings);
-            while (matcher.find()) {
-                String number = matcher.group(0);
-                if (CatalogueUtil.isEmpty(number)) {
-                    status.set("-1");
+            if(StringUtils.isNotBlank(bhThings)){
+                Pattern compile = Pattern.compile("(?<=2.).*(?=3.体格检查)");
+                Matcher matcher = compile.matcher(bhThings);
+                while (matcher.find()) {
+                    String number = matcher.group(0);
+                    if (CatalogueUtil.isEmpty(number)) {
+                        status.set("-1");
+                    }
+                }
+                //处理台州的
+                if (bhThings.contains("患者因")) {
+                    status.set("0");
                 }
             }
-            //处理台州的
-            if (bhThings.contains("患者因")) {
-                status.set("0");
-            }
+
 
 
             //                    bhThings = bhThings.replaceAll("[\\p{Punct}\\pP]", "");

+ 38 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0313.java

@@ -0,0 +1,38 @@
+package com.lantone.qc.kernel.catalogue.operationdiscussion;
+
+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.doc.DoctorAdviceDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.List;
+
+/**
+ * @Description: 缺手术安全核查表 ,前提要有手术记录
+ * @author: kwz
+ * @time: 2020/06/29 11:22
+ */
+@Component
+public class OPE0313 extends QCCatalogue {
+
+    @Override
+    protected void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
+        status.set("0");
+        //先判断有无手术记录
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+
+        if(operationDocs != null && operationDocs.size()>0){
+            long count_oper = operationDocs.stream().map(i -> i.getOperationRecordDoc()).filter(i -> i != null).count();
+
+            long count_safe = operationDocs.stream().map(i -> i.getOperationSafetyChecklistDoc()).filter(i -> i != null).count();
+            if(count_oper>0 && count_safe ==0){
+                status.set("-1");
+            }
+        }
+
+    }
+
+}

+ 16 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0322.java

@@ -3,9 +3,12 @@ package com.lantone.qc.kernel.catalogue.operationdiscussion;
 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.doc.DoctorAdviceDoc;
+import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
 import org.springframework.stereotype.Component;
 
 import java.text.ParseException;
+import java.util.List;
 
 /**
  * @Description: 手术患者无手术记录
@@ -18,10 +21,22 @@ public class OPE0322 extends QCCatalogue {
     @Override
     protected void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
         status.set("0");
+        //先判断医嘱里有无手术
+        List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
+        if (doctorAdviceDocs.size() == 0 ) {
+            return;
+        }
         long cou = inputInfo.getOperationDocs().stream().map(i -> i.getOperationRecordDoc()).filter(i -> i != null).count();
+        for (DoctorAdviceDoc dad:doctorAdviceDocs) {
+            String name = dad.getStructureMap().get("医嘱项目名称");
+            if(name.contains("手术") && cou == 0){
+                status.set("-1");
+            }
+        }
+        /*long cou = inputInfo.getOperationDocs().stream().map(i -> i.getOperationRecordDoc()).filter(i -> i != null).count();
         if (cou == 0) {
             status.set("-1");
-        }
+        }*/
     }
 
 }

+ 4 - 4
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0648.java

@@ -33,14 +33,14 @@ public class OPE0648 extends QCCatalogue {
                 long count = operationDocs.stream().filter(operationDoc -> {
                     boolean flag = false;
                     if (operationDoc.getOperationRecordDoc() != null) {
-                        String surgeon = operationDoc.getOperationRecordDoc().getStructureMap().get("主刀医师");
+                        String surgeon = operationDoc.getOperationRecordDoc().getStructureMap().get("主刀医师签名");
                         String assist1 = operationDoc.getOperationRecordDoc().getStructureMap().get("一助");
                         String asssit2 = operationDoc.getOperationRecordDoc().getStructureMap().get("助手II");
-                        String signature = operationDoc.getOperationRecordDoc().getStructureMap().get("医生");
+                        String signature = operationDoc.getOperationRecordDoc().getStructureMap().get("手术医师");
 
-                        String operator = surgeon + ", " + assist1 + ", " + asssit2;
+                        String operator = signature + ", " + assist1 + ", " + asssit2;
 
-                        if (!operator.contains(signature)) {
+                        if (!operator.contains(surgeon)) {
                             flag = true;
                         }
                     }

+ 48 - 0
kernel/src/main/java/com/lantone/qc/kernel/util/ClearBracketUtil.java

@@ -0,0 +1,48 @@
+package com.lantone.qc.kernel.util;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2020-06-29 10:33
+ */
+public class ClearBracketUtil {
+    /**
+     * 去除括号里的内容
+     * @param context
+     * @return
+     */
+    public static String ClearBracket(String context) {
+        //        String bracket = context.substring(context.indexOf("("), context.indexOf(")") + 1);
+        //        context = context.replace(bracket, "");
+        //
+        //        context.substring(context.lastIndexOf())
+        //
+        //        return context;
+
+        // 修改原来的逻辑,防止右括号出现在左括号前面的位置
+        int head = context.indexOf('('); // 标记第一个使用左括号的位置
+        if (head == -1) {
+            return context; // 如果context中不存在括号,什么也不做,直接跑到函数底端返回初值str
+        } else {
+            int next = head + 1; // 从head+1起检查每个字符
+            int count = 1; // 记录括号情况
+            do {
+                if (context.charAt(next) == '(') {
+                    count++;
+                } else if (context.charAt(next) == ')') {
+                    count--;
+                }
+                next++; // 更新即将读取的下一个字符的位置
+                if (count == 0) // 已经找到匹配的括号
+                {
+                    String temp = context.substring(head, next); // 将两括号之间的内容及括号提取到temp中
+                    context = context.replace(temp, ""); // 用空内容替换,复制给context
+                    head = context.indexOf('('); // 找寻下一个左括号
+                    next = head + 1; // 标记下一个左括号后的字符位置
+                    count = 1; // count的值还原成1
+                }
+            } while (head != -1); // 如果在该段落中找不到左括号了,就终止循环
+        }
+        return context; // 返回更新后的context
+    }
+}

+ 5 - 3
trans/src/main/java/com/lantone/qc/trans/shaoyf/ShaoyfOperationDocTrans.java

@@ -151,11 +151,13 @@ public class ShaoyfOperationDocTrans extends ModelDocTrans {
     private List<String> operationRecord_keyContrasts = Lists.newArrayList(
             "结束时间=手术结束时间",
             "开始时间=手术开始时间",
-            "手术医师=主刀医师",
+            "医生=主刀医师签名",
             "助手=一助",
-            "助手II=二助",
+//            "助手II=二助",
             "补救措施1=补救措施",
-            "本人姓名=姓名"
+            "本人姓名=姓名",
+            "二助=助手II"
+//            "医生=手术医师"
     );