Browse Source

长兴:急会诊未在十分钟内到达

wangyu 5 years ago
parent
commit
98b6bbe9ed

+ 68 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/consultation/CON0281.java

@@ -0,0 +1,68 @@
+package com.lantone.qc.kernel.catalogue.consultation;
+
+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.doc.DoctorAdviceDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
+import com.lantone.qc.pub.util.DateUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.http.client.utils.DateUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+
+/**
+ * @ClassName : CON0281
+ * @Description : 急会诊未在十分钟内到达
+ * @Author : 王宇
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class CON0281 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        DateUtil dateUtil = new DateUtil();
+        if (inputInfo.getConsultationDocs() == null) {
+            return;
+        }
+        //会诊单按日会诊申请日期排序
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        //医嘱按照医嘱开始时间排序
+        List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
+        Collections.sort(doctorAdviceDocs, new Comparator<DoctorAdviceDoc>(){
+            public int compare (DoctorAdviceDoc o1, DoctorAdviceDoc o2){
+                return o1.getStructureMap().get("医嘱开始时间")
+                        .compareTo(o2.getStructureMap().get("医嘱开始时间"));
+            }
+        });
+        StringBuffer stringBuffer = new StringBuffer();
+        for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {//循环取最近一条医嘱和会诊申请单中的急会诊比较
+            for (ConsultationDoc consultationDoc : consultationDocs) {
+                if(consultationDoc.getConsultationRecordDoc() == null || doctorAdviceDocs == null){
+                    continue;
+                }
+                if(doctorAdviceDoc.getStructureMap().get("医嘱项目名称") != null && doctorAdviceDoc.getStructureMap().get("医嘱项目名称").contains("会诊")){
+                    if(consultationDoc.getConsultationResultsDoc().getStructureMap().get("会诊分类") == null && consultationDoc.getConsultationResultsDoc().getStructureMap().get("会诊分类").contains("急会诊")){
+                        if(dateUtil.getDistanceTime3(dateUtil.parseDate(doctorAdviceDoc.getStructureMap().get("医嘱开始时间"),DateUtil.DATE_TIME_FORMAT)
+                                ,dateUtil.parseDate(consultationDoc.getConsultationResultsDoc().getStructureMap().get("会诊时间"),DateUtil.DATE_TIME_FORMAT)) > 10){//如果医嘱中的日期和会诊结果中的日期大于十分钟
+                            status.set("-1");
+                        }else {
+                            stringBuffer.append(doctorAdviceDoc.getStructureMap().get("医嘱项目名称")
+                                    +":"
+                                    +doctorAdviceDoc.getStructureMap().get("医嘱开始时间")
+                                    +"会诊时间:"
+                                    +consultationDoc.getConsultationResultsDoc().getStructureMap().get("会诊时间"));
+                            continue;
+                        }
+                    }
+                }
+
+            }
+        }
+        info.set(stringBuffer.toString());
+
+    }
+}

+ 10 - 24
trans/src/main/java/com/lantone/qc/trans/changx/ChangxConsultationDocTrans.java

@@ -129,33 +129,19 @@ public class ChangxConsultationDocTrans extends ModelDocTrans {
     }
     }
 
 
     private ConsultationResultsDoc getConsultationResultsDoc(String content) {
     private ConsultationResultsDoc getConsultationResultsDoc(String content) {
-        Map<String, String> pageData = Preproc.extract_doc_pub(true, consultationResults_pageDataTitles, content);
-        pageData.put("病程记录内容",
-                pageData.get("病程记录内容")
-                        .replace(pageData.get("病程记录时间"), "")
-                        .replace(pageData.get("病程记录名称"), "")
-        );
-
-        List<String> targetTitles = Lists.newArrayList();
-        consultationResults_sourceTitles.forEach(sourceTitle -> {
-            String targetTitle = "";
-            for (int index = 0; index < sourceTitle.length(); index++) {
-                if (index == sourceTitle.length() - 1) {
-                    targetTitle += sourceTitle.substring(index, index + 1);
-                } else {
-                    targetTitle += sourceTitle.substring(index, index + 1) + "[\\s\\p{Zs}]*";
-                }
-            }
-            targetTitles.add(targetTitle);
-        });
+        Map<String, String> xmlNodeValueMap = CxXmlUtil.firstLevelNodeValue("//DocObjContent", content);
+        Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(xmlNodeValueMap, consultationApplication_keyContrasts);
 
 
-        Map<String, String> sourceMap = Preproc.extract_doc_pub(true, targetTitles, content);
-        sourceMap.put("记录时间", sourceMap.get("病程记录时间"));
+        String text = CxXmlUtil.getTextByNodePath(content, "//DocObjContent/Content_Text");
+        if (StringUtil.isBlank(text)) {
+            text = CxXmlUtil.getTextByNodePath(content, "//DocObjContent");
+        }
+        Map<String, String> cutWordMap = Preproc.getCutWordMap(true, consultationApplication_sourceTitles, text);
+        cutWordMap.putAll(structureMap);
 
 
-        ConsultationResultsDoc consultationResultsDoc = ModelDocGenerate.consultationResultsDocGen(sourceMap);
+        ConsultationResultsDoc consultationResultsDoc = ModelDocGenerate.consultationResultsDocGen(cutWordMap);
         consultationResultsDoc.setText(content);
         consultationResultsDoc.setText(content);
-        consultationResultsDoc.setPageData((Map) pageData);
-
+        consultationResultsDoc.setPageData((Map) xmlNodeValueMap);
         return consultationResultsDoc;
         return consultationResultsDoc;
     }
     }