|
@@ -1,17 +1,25 @@
|
|
|
package com.lantone.qc.trans.changx;
|
|
|
|
|
|
import com.google.common.collect.Lists;
|
|
|
-import com.lantone.qc.pub.model.doc.ConsultationDoc;
|
|
|
+import com.google.common.collect.Maps;
|
|
|
+import com.google.common.collect.Sets;
|
|
|
+import com.lantone.qc.pub.model.doc.consultation.ConsultationApplicationDoc;
|
|
|
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
|
|
|
+import com.lantone.qc.pub.model.doc.consultation.ConsultationRecordDoc;
|
|
|
+import com.lantone.qc.pub.model.doc.consultation.ConsultationResultsDoc;
|
|
|
import com.lantone.qc.pub.model.vo.MedrecVo;
|
|
|
+import com.lantone.qc.pub.util.ListUtil;
|
|
|
+import com.lantone.qc.pub.util.StringUtil;
|
|
|
import com.lantone.qc.trans.ModelDocTrans;
|
|
|
import com.lantone.qc.trans.comsis.ModelDocGenerate;
|
|
|
import com.lantone.qc.trans.comsis.Preproc;
|
|
|
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
|
|
|
/**
|
|
|
- * @Description: 会诊记录文档生成
|
|
|
+ * @Description: 会诊文档生成
|
|
|
* @author: rengb
|
|
|
* @time: 2020/3/17 13:22
|
|
|
*/
|
|
@@ -20,15 +28,57 @@ public class ChangxConsultationDocTrans extends ModelDocTrans {
|
|
|
@Override
|
|
|
public List<ConsultationDoc> extract(MedrecVo medrecVo) {
|
|
|
List<ConsultationDoc> retList = Lists.newArrayList();
|
|
|
- List<String> contents = (List) medrecVo.getContent().get("content");
|
|
|
- contents.forEach(content -> {
|
|
|
- retList.add(getConsultationDoc(content));
|
|
|
+
|
|
|
+ Map<String, List<String>> contentMap = (Map) medrecVo.getContent().get("content");
|
|
|
+ if (contentMap == null) {
|
|
|
+ return retList;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, ConsultationRecordDoc> consultationRecordDocMap = getConsultationRecordDocMap(contentMap.get("会诊记录"));
|
|
|
+ Map<String, ConsultationResultsDoc> consultationResultsDocMap = getConsultationResultsDocMap(contentMap.get("会诊结果单"));
|
|
|
+ Map<String, ConsultationApplicationDoc> consultationApplicationDocMap = getConsultationApplicationDocMap(contentMap.get("会诊申请单"));
|
|
|
+
|
|
|
+ Set<String> consultationNameSet = Sets.newHashSet();
|
|
|
+ consultationNameSet.addAll(consultationRecordDocMap.keySet());
|
|
|
+ consultationNameSet.addAll(consultationResultsDocMap.keySet());
|
|
|
+ consultationNameSet.addAll(consultationApplicationDocMap.keySet());
|
|
|
+
|
|
|
+ consultationNameSet.forEach(consultationName -> {
|
|
|
+ ConsultationDoc consultationDoc = new ConsultationDoc();
|
|
|
+ consultationDoc.setConsultationName(consultationName);
|
|
|
+ consultationDoc.setConsultationRecordDoc(consultationRecordDocMap.get(consultationName));
|
|
|
+ consultationDoc.setConsultationResultsDoc(consultationResultsDocMap.get(consultationName));
|
|
|
+ consultationDoc.setConsultationApplicationDoc(consultationApplicationDocMap.get(consultationName));
|
|
|
+ retList.add(consultationDoc);
|
|
|
});
|
|
|
+
|
|
|
return retList;
|
|
|
}
|
|
|
|
|
|
- private ConsultationDoc getConsultationDoc(String content) {
|
|
|
- Map<String, String> pageData = Preproc.extract_doc_pub(true, pageDataTitles, content);
|
|
|
+
|
|
|
+ /**************************************************会诊记录*********************************************************/
|
|
|
+ private Map<String, ConsultationRecordDoc> getConsultationRecordDocMap(List<String> contents) {
|
|
|
+ Map<String, ConsultationRecordDoc> retMap = Maps.newHashMap();
|
|
|
+ if (ListUtil.isEmpty(contents)) {
|
|
|
+ return retMap;
|
|
|
+ }
|
|
|
+ int index = 1;
|
|
|
+ String consultationName = null;
|
|
|
+ for (String content : contents) {
|
|
|
+ if (StringUtil.isBlank(content)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ consultationName = index + "";
|
|
|
+ ConsultationRecordDoc consultationRecordDoc = getConsultationRecordDoc(content);
|
|
|
+ consultationRecordDoc.setConsultationName(consultationName);
|
|
|
+ retMap.put(consultationName, consultationRecordDoc);
|
|
|
+ index++;
|
|
|
+ }
|
|
|
+ return retMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ private ConsultationRecordDoc getConsultationRecordDoc(String content) {
|
|
|
+ Map<String, String> pageData = Preproc.extract_doc_pub(true, consultationRecord_pageDataTitles, content);
|
|
|
pageData.put("病程记录内容",
|
|
|
pageData.get("病程记录内容")
|
|
|
.replace(pageData.get("病程记录时间"), "")
|
|
@@ -36,7 +86,7 @@ public class ChangxConsultationDocTrans extends ModelDocTrans {
|
|
|
);
|
|
|
|
|
|
List<String> targetTitles = Lists.newArrayList();
|
|
|
- sourceTitles.forEach(sourceTitle -> {
|
|
|
+ consultationRecord_sourceTitles.forEach(sourceTitle -> {
|
|
|
String targetTitle = "";
|
|
|
for (int index = 0; index < sourceTitle.length(); index++) {
|
|
|
if (index == sourceTitle.length() - 1) {
|
|
@@ -52,21 +102,20 @@ public class ChangxConsultationDocTrans extends ModelDocTrans {
|
|
|
sourceMap.put("记录时间", sourceMap.get("病程记录时间"));
|
|
|
sourceMap.put("会诊情况", sourceMap.get("病程记录内容"));
|
|
|
|
|
|
- ConsultationDoc consultationDoc = ModelDocGenerate.consultationDocGen(sourceMap);
|
|
|
- consultationDoc.setText(content);
|
|
|
- consultationDoc.setPageData((Map) pageData);
|
|
|
+ ConsultationRecordDoc consultationRecordDoc = ModelDocGenerate.consultationRecordDocGen(sourceMap);
|
|
|
+ consultationRecordDoc.setText(content);
|
|
|
+ consultationRecordDoc.setPageData((Map) pageData);
|
|
|
|
|
|
- return consultationDoc;
|
|
|
+ return consultationRecordDoc;
|
|
|
}
|
|
|
|
|
|
- private List<String> pageDataTitles = Lists.newArrayList(
|
|
|
+ private List<String> consultationRecord_pageDataTitles = Lists.newArrayList(
|
|
|
"病程记录时间",
|
|
|
"病程记录名称",
|
|
|
"病程记录内容",
|
|
|
"记录医师"
|
|
|
);
|
|
|
-
|
|
|
- private List<String> sourceTitles = Lists.newArrayList(
|
|
|
+ private List<String> consultationRecord_sourceTitles = Lists.newArrayList(
|
|
|
"病程记录时间",
|
|
|
"病程记录名称",
|
|
|
"病程记录内容",
|
|
@@ -75,4 +124,136 @@ public class ChangxConsultationDocTrans extends ModelDocTrans {
|
|
|
"记录医师"
|
|
|
);
|
|
|
|
|
|
+
|
|
|
+ /**************************************************会诊结果单*******************************************************/
|
|
|
+ private Map<String, ConsultationResultsDoc> getConsultationResultsDocMap(List<String> contents) {
|
|
|
+ Map<String, ConsultationResultsDoc> retMap = Maps.newHashMap();
|
|
|
+ if (ListUtil.isEmpty(contents)) {
|
|
|
+ return retMap;
|
|
|
+ }
|
|
|
+ int index = 1;
|
|
|
+ String consultationName = null;
|
|
|
+ for (String content : contents) {
|
|
|
+ if (StringUtil.isBlank(content)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ consultationName = index + "";
|
|
|
+ ConsultationResultsDoc consultationResultsDoc = getConsultationResultsDoc(content);
|
|
|
+ consultationResultsDoc.setConsultationName(consultationName);
|
|
|
+ retMap.put(consultationName, consultationResultsDoc);
|
|
|
+ index++;
|
|
|
+ }
|
|
|
+ return retMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ 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> sourceMap = Preproc.extract_doc_pub(true, targetTitles, content);
|
|
|
+ sourceMap.put("记录时间", sourceMap.get("病程记录时间"));
|
|
|
+
|
|
|
+ ConsultationResultsDoc consultationResultsDoc = ModelDocGenerate.consultationResultsDocGen(sourceMap);
|
|
|
+ consultationResultsDoc.setText(content);
|
|
|
+ consultationResultsDoc.setPageData((Map) pageData);
|
|
|
+
|
|
|
+ return consultationResultsDoc;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<String> consultationResults_pageDataTitles = Lists.newArrayList(
|
|
|
+ "病程记录时间",
|
|
|
+ "病程记录名称",
|
|
|
+ "病程记录内容",
|
|
|
+ "记录医师"
|
|
|
+ );
|
|
|
+ private List<String> consultationResults_sourceTitles = Lists.newArrayList(
|
|
|
+ "病程记录时间",
|
|
|
+ "病程记录名称",
|
|
|
+ "病程记录内容",
|
|
|
+ "记录医师"
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+ /**************************************************会诊申请单*******************************************************/
|
|
|
+ private Map<String, ConsultationApplicationDoc> getConsultationApplicationDocMap(List<String> contents) {
|
|
|
+ Map<String, ConsultationApplicationDoc> retMap = Maps.newHashMap();
|
|
|
+ if (ListUtil.isEmpty(contents)) {
|
|
|
+ return retMap;
|
|
|
+ }
|
|
|
+ int index = 1;
|
|
|
+ String consultationName = null;
|
|
|
+ for (String content : contents) {
|
|
|
+ if (StringUtil.isBlank(content)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ consultationName = index + "";
|
|
|
+ ConsultationApplicationDoc consultationApplicationDoc = getConsultationApplicationDoc(content);
|
|
|
+ consultationApplicationDoc.setConsultationName(consultationName);
|
|
|
+ retMap.put(consultationName, consultationApplicationDoc);
|
|
|
+ index++;
|
|
|
+ }
|
|
|
+ return retMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ private ConsultationApplicationDoc getConsultationApplicationDoc(String content) {
|
|
|
+ Map<String, String> pageData = Preproc.extract_doc_pub(true, consultationApplication_pageDataTitles, content);
|
|
|
+ pageData.put("病程记录内容",
|
|
|
+ pageData.get("病程记录内容")
|
|
|
+ .replace(pageData.get("病程记录时间"), "")
|
|
|
+ .replace(pageData.get("病程记录名称"), "")
|
|
|
+ );
|
|
|
+
|
|
|
+ List<String> targetTitles = Lists.newArrayList();
|
|
|
+ consultationApplication_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> sourceMap = Preproc.extract_doc_pub(true, targetTitles, content);
|
|
|
+ sourceMap.put("记录时间", sourceMap.get("病程记录时间"));
|
|
|
+
|
|
|
+ ConsultationApplicationDoc consultationApplicationDoc = ModelDocGenerate.consultationApplicationDocGen(sourceMap);
|
|
|
+ consultationApplicationDoc.setText(content);
|
|
|
+ consultationApplicationDoc.setPageData((Map) pageData);
|
|
|
+
|
|
|
+ return consultationApplicationDoc;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<String> consultationApplication_pageDataTitles = Lists.newArrayList(
|
|
|
+ "病程记录时间",
|
|
|
+ "病程记录名称",
|
|
|
+ "病程记录内容",
|
|
|
+ "记录医师"
|
|
|
+ );
|
|
|
+ private List<String> consultationApplication_sourceTitles = Lists.newArrayList(
|
|
|
+ "病程记录时间",
|
|
|
+ "病程记录名称",
|
|
|
+ "病程记录内容",
|
|
|
+ "记录医师"
|
|
|
+ );
|
|
|
+
|
|
|
}
|