Bladeren bron

恩泽:一般手术记录解析更改

wangsy 4 jaren geleden
bovenliggende
commit
9fbc9c4f60

+ 1 - 1
common/src/main/java/com/lantone/common/util/DateUtil.java

@@ -63,7 +63,7 @@ public class DateUtil {
     /**
      * 中文全称精确到分钟  如:2010年12月01日  23时15分
      */
-    public static String FORMAT_LONG_CN_MI = "yyyy年MM月dd日  HH时mm分";
+    public static String FORMAT_LONG_CN_MI = "yyyy年MM月dd日HH时mm分";
 
     /**
      * 精确到毫秒的完整中文时间

+ 24 - 3
structure-center/src/main/java/com/lantone/structure/ai/process/EntityOperationRecord.java

@@ -53,13 +53,34 @@ public class EntityOperationRecord extends EntityProcess {
             operationRecordLabel.setDuringDrugs(findFirstT(createEntityTree(aiOut, "药物名称"), new DuringDrugs()));
 
             //引流材料名称
-            operationRecordLabel.setDrainageMaterialsName(findFirstT(createEntityTree(aiOut, "引流材料名称"), new DrainageMaterialsName()));
+            List<Lemma> drainageMaterialsNameLemma = createEntityTree(aiOut, "引流材料名称");
+            List<DrainageMaterialsName> drainageMaterialsNameList = new ArrayList<>();
+            for (Lemma lemma : drainageMaterialsNameLemma) {
+                DrainageMaterialsName drainageMaterialsName = new DrainageMaterialsName();
+                drainageMaterialsName.setName(lemma.getText());
+                drainageMaterialsNameList.add(drainageMaterialsName);
+            }
+            operationRecordLabel.setDrainageMaterialsNames(drainageMaterialsNameList);
 
             //引流材料数目
-            operationRecordLabel.setDrainageMaterialsAmount(findFirstT(createEntityTree(aiOut, "引流材料数目"), new DrainageMaterialsAmount()));
+            List<Lemma> drainageMaterialsAmountLemma = createEntityTree(aiOut, "引流材料数目");
+            List<DrainageMaterialsAmount> drainageMaterialsAmountList = new ArrayList<>();
+            for (Lemma lemma : drainageMaterialsAmountLemma) {
+                DrainageMaterialsAmount drainageMaterialsAmount = new DrainageMaterialsAmount();
+                drainageMaterialsAmount.setName(lemma.getText());
+                drainageMaterialsAmountList.add(drainageMaterialsAmount);
+            }
+            operationRecordLabel.setDrainageMaterialsAmounts(drainageMaterialsAmountList);
 
             //放置部位
-            operationRecordLabel.setPlacePosition(findFirstT(createEntityTree(aiOut, "放置部位"), new PlacePosition()));
+            List<Lemma> placePositionLemma = createEntityTree(aiOut, "放置部位");
+            List<PlacePosition> placePositionList = new ArrayList<>();
+            for (Lemma lemma : placePositionLemma) {
+                PlacePosition placePosition = new PlacePosition();
+                placePosition.setName(lemma.getText());
+                placePositionList.add(placePosition);
+            }
+            operationRecordLabel.setPlacePositions(placePositionList);
 
         } catch (Exception e) {
             e.printStackTrace();

+ 64 - 13
structure-center/src/main/java/com/lantone/structure/facade/tran/OperationRecordDocTran.java

@@ -7,8 +7,7 @@ import com.lantone.common.util.StringUtil;
 import com.lantone.structure.facade.tran.util.CommonAnalysisUtil;
 import com.lantone.structure.model.doc.operation.OperationDoc;
 import com.lantone.structure.model.doc.operation.OperationRecordDoc;
-import com.lantone.structure.model.entity.Intervention;
-import com.lantone.structure.model.entity.OperationIncision;
+import com.lantone.structure.model.entity.*;
 import com.lantone.structure.model.label.OperationRecordLabel;
 import com.lantone.structure.util.MapUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -55,8 +54,14 @@ public class OperationRecordDocTran extends TargetTran {
             if (operationRecordDoc != null) {
                 int interventionCount = 1;
                 int operationIncisionCount = 1;
+                int drainageMaterialsNameCount = 1;
+                int drainageMaterialsAmountCount = 1;
+                int placePositionCount = 1;
                 StringBuffer interventionString = new StringBuffer();
                 StringBuffer operationIncisionString = new StringBuffer();
+                StringBuffer drainageMaterialsNameString = new StringBuffer();
+                StringBuffer drainageMaterialsAmountString = new StringBuffer();
+                StringBuffer placePositionString = new StringBuffer();
                 OperationRecordLabel operationRecordLabel = operationRecordDoc.getOperationRecordLabel();
                 if (operationRecordLabel == null) {
                     return;
@@ -111,23 +116,66 @@ public class OperationRecordDocTran extends TargetTran {
                 }
 
                 //引流材料名称
-                if (operationRecordLabel.getDrainageMaterialsName() != null && StringUtils.isNotEmpty(operationRecordLabel.getDrainageMaterialsName().getName())) {
-                    retMap.put("引流材料名称", operationRecordLabel.getDrainageMaterialsName().getName());
+                if (ListUtil.isNotEmpty(operationRecordLabel.getDrainageMaterialsNames())) {
+                    for (DrainageMaterialsName drainageMaterialsNames : operationRecordLabel.getDrainageMaterialsNames()) {
+                        if (StringUtils.isNotEmpty(drainageMaterialsNames.getName())) {
+                            if (operationRecordLabel.getDrainageMaterialsNames().size() > 1) {
+                                drainageMaterialsNameString.append((drainageMaterialsNameCount++) + ".");
+                            }
+                            drainageMaterialsNameString.append(drainageMaterialsNames.getName());
+                        }
+
+                    }
+                    retMap.put("引流材料名称", drainageMaterialsNameString.toString());
                 }
+//                if (operationRecordLabel.getDrainageMaterialsName() != null && StringUtils.isNotEmpty(operationRecordLabel.getDrainageMaterialsName().getName())) {
+//                    retMap.put("引流材料名称", operationRecordLabel.getDrainageMaterialsName().getName());
+//                }
+                //放置部位
+                if (ListUtil.isNotEmpty(operationRecordLabel.getPlacePositions())) {
+                    for (PlacePosition PlacePositions : operationRecordLabel.getPlacePositions()) {
+                        if (StringUtils.isNotEmpty(PlacePositions.getName())) {
+                            if (operationRecordLabel.getPlacePositions().size() > 1) {
+                                placePositionString.append((placePositionCount++) + ".");
+                            }
+                            placePositionString.append(PlacePositions.getName());
+                        }
 
-                //引流材料数目
-                if (operationRecordLabel.getDrainageMaterialsAmount() != null && StringUtils.isNotEmpty(operationRecordLabel.getDrainageMaterialsAmount().getName())) {
-                    retMap.put("引流材料数目", operationRecordLabel.getDrainageMaterialsAmount().getName());
+                    }
+                    retMap.put("放置部位", placePositionString.toString());
                 }
+//                if (operationRecordLabel.getPlacePosition() != null && StringUtils.isNotEmpty(operationRecordLabel.getPlacePosition().getName())) {
+//                    retMap.put("放置部位", operationRecordLabel.getPlacePosition().getName());
+//                }
 
-                //放置部位
-                if (operationRecordLabel.getPlacePosition() != null && StringUtils.isNotEmpty(operationRecordLabel.getPlacePosition().getName())) {
-                    retMap.put("放置部位", operationRecordLabel.getPlacePosition().getName());
+                //引流材料数目
+                if (ListUtil.isNotEmpty(operationRecordLabel.getDrainageMaterialsAmounts())) {
+                    for (DrainageMaterialsAmount drainageMaterialsAmounts : operationRecordLabel.getDrainageMaterialsAmounts()) {
+                        if (StringUtils.isNotEmpty(drainageMaterialsAmounts.getName())) {
+//                            if (operationRecordLabel.getDrainageMaterialsAmounts().size() > 1) {
+//                                drainageMaterialsAmountString.append((placePositionCount++) + ".");
+//                            }
+                            addAmount(drainageMaterialsAmountString, drainageMaterialsAmounts.getName());
+                            drainageMaterialsAmountString.append(drainageMaterialsAmounts.getName() + "、");
+                        }
+                    }
+                    retMap.put("引流材料数目", drainageMaterialsAmountString.toString());
                 }
+//                if (operationRecordLabel.getDrainageMaterialsAmount() != null && StringUtils.isNotEmpty(operationRecordLabel.getDrainageMaterialsAmount().getName())) {
+//                    retMap.put("引流材料数目", operationRecordLabel.getDrainageMaterialsAmount().getName());
+//                }
+
+
             }
         });
     }
 
+    private String addAmount(StringBuffer drainageMaterialsAmountString ,String str) {
+
+
+        return "";
+    }
+
     private Map<String, String> cutWord(String text) {
         Map<String, String> sourceMap = Maps.newHashMap();
         text = text.replace("年  月  日  时  分", "").replace("第1次手术", "")
@@ -135,7 +183,7 @@ public class OperationRecordDocTran extends TargetTran {
         List<String> titles = CommonAnalysisUtil.sortTitles(
                 Lists.newArrayList("手术开始时间", "手术结束时间", "术前诊断", "手术名称", "术中诊断", "手 术 者", "手术人员", "助手",
                         "麻醉方法", "麻醉方式", "麻 醉 者", "麻醉医师", "手术标本", "手术切除标本", "术中并发症", "术中失血量", "术中输血量", "手术简要经过(包括“术中所见”)",
-                        "手术经过", "术后情况及诊疗计划", "术后注意事项", "记录者", "主刀医生", "医生签名", "患者或代理人签名", "与病人关系"),
+                        "手术经过", "术后情况及诊疗计划", "术后注意事项", "记录者", "主刀医生", "医生签名", "主刀医师签名", "记录时间", "患者或代理人签名", "与病人关系"),
                 text
         );
         CommonAnalysisUtil.cutByTitles(text, titles, 0, sourceMap);
@@ -162,7 +210,7 @@ public class OperationRecordDocTran extends TargetTran {
             }
 
             CommonAnalysisUtil.removeKey(sourceMap, "术前诊断", "术中诊断", "⒈患者基本情况", "⒉拟实施的输血方案", "手术标本", "手术切除标本", "术中并发症",
-                    "与病人关系", "术后情况及诊疗计划", "术后注意事项", "手术简要经过(包括“术中所见”)");
+                    "与病人关系", "术后情况及诊疗计划", "术后注意事项");
         }
         return sourceMap;
     }
@@ -201,6 +249,7 @@ public class OperationRecordDocTran extends TargetTran {
     private List<String> keyContrasts = Lists.newArrayList(
             "手术开始时间=手术开始日期时间",
             "手术结束时间=手术结束日期时间",
+            "手术简要经过(包括“术中所见”)=手术过程描述",
             "手术经过=手术过程描述",
             "手术者=手术者姓名",
             "手术人员=手术者姓名",
@@ -209,6 +258,8 @@ public class OperationRecordDocTran extends TargetTran {
             "医护人员陈述=手术者签名",
             "主刀医生=手术者签名",
             "术中失血量=出血量(mL)",
-            "术中输血量=输血量(mL)"
+            "术中输血量=输血量(mL)",
+            "主刀医师签名=手术者签名",
+            "记录时间=签名日期时间"
     );
 }

+ 10 - 10
structure-center/src/main/java/com/lantone/structure/model/label/OperationRecordLabel.java

@@ -16,14 +16,14 @@ import java.util.List;
 @Getter
 @Setter
 public class OperationRecordLabel {
-    private List<Drug> drugs = new ArrayList<>();                           //药物
-    private List<Intervention> interventions = new ArrayList<>();           //介入物名称
-    private SkinSterilize skinSterilize;                                    //皮肤消毒描述
-    private List<OperationIncision> operationIncision = new ArrayList<>();; //手术切口描述
-    private TransfuseQuantity transfuseQuantity;                            //输液量(mL)
-    private PreoperativeDrugs preoperativeDrugs;                            //术前用药
-    private DuringDrugs duringDrugs;                                        //术中用药
-    private DrainageMaterialsName drainageMaterialsName;                    //引流材料名称
-    private DrainageMaterialsAmount drainageMaterialsAmount;                //引流材料数目
-    private PlacePosition placePosition;                                    //放置部位
+    private List<Drug> drugs = new ArrayList<>();                                       //药物
+    private List<Intervention> interventions = new ArrayList<>();                       //介入物名称
+    private SkinSterilize skinSterilize;                                                //皮肤消毒描述
+    private List<OperationIncision> operationIncision = new ArrayList<>();              //手术切口描述
+    private TransfuseQuantity transfuseQuantity;                                        //输液量(mL)
+    private PreoperativeDrugs preoperativeDrugs;                                        //术前用药
+    private DuringDrugs duringDrugs;                                                    //术中用药
+    private List<DrainageMaterialsName> drainageMaterialsNames = new ArrayList<>();     //引流材料名称
+    private List<DrainageMaterialsAmount> drainageMaterialsAmounts = new ArrayList<>(); //引流材料数目
+    private List<PlacePosition> placePositions = new ArrayList<>();                      //放置部位
 }