|
@@ -1,6 +1,8 @@
|
|
|
package com.lantone.qc.trans.changx;
|
|
|
|
|
|
import com.google.common.collect.Lists;
|
|
|
+import com.google.common.collect.Maps;
|
|
|
+import com.google.common.collect.Sets;
|
|
|
import com.lantone.qc.pub.model.doc.operation.OperationDiscussionDoc;
|
|
|
import com.lantone.qc.pub.model.doc.operation.OperationDoc;
|
|
|
import com.lantone.qc.pub.model.doc.operation.OperationRecordDoc;
|
|
@@ -15,6 +17,7 @@ import com.lantone.qc.trans.comsis.Preproc;
|
|
|
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
|
|
|
/**
|
|
|
* @Description: 手术文档生成
|
|
@@ -27,71 +30,128 @@ public class ChangxOperationDocTrans extends ModelDocTrans {
|
|
|
public List<OperationDoc> extract(MedrecVo medrecVo) {
|
|
|
List<OperationDoc> retList = Lists.newArrayList();
|
|
|
Map<String, Object> content = medrecVo.getContent();
|
|
|
+
|
|
|
+ List<String>
|
|
|
+ operationDiscussionLabel = null, operationDiscussionContent = null,
|
|
|
+ operationRecordLabel = null, operationRecordContent = null,
|
|
|
+ preoperativeDiscussionLabel = null, preoperativeDiscussionContent = null;
|
|
|
+
|
|
|
Map<String, List<String>> labelMap = (Map) content.get("label");
|
|
|
- List<String> operationDiscussionLabel = labelMap.get("术后首次病程及谈话记录");
|
|
|
- List<String> preoperativeDiscussionLabel = labelMap.get("术前讨论、术前小结");
|
|
|
- List<String> operationRecordLabel = labelMap.get("术前讨论、术前小结");
|
|
|
- List<Map<String, String>> operations = (List) content.get("content");
|
|
|
+ if (labelMap != null) {
|
|
|
+ operationDiscussionLabel = labelMap.get("术后首次病程及谈话记录");
|
|
|
+ operationRecordLabel = labelMap.get("手术记录");
|
|
|
+ preoperativeDiscussionLabel = labelMap.get("术前讨论、术前小结");
|
|
|
+ }
|
|
|
+ Map<String, List<String>> contentMap = (Map) content.get("content");
|
|
|
+ if (contentMap != null) {
|
|
|
+ operationDiscussionContent = contentMap.get("术后首次病程及谈话记录");
|
|
|
+ operationRecordContent = contentMap.get("手术记录");
|
|
|
+ preoperativeDiscussionContent = contentMap.get("术前讨论、术前小结");
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, OperationDiscussionDoc> operationDiscussionDocMap = getOperationDiscussionDocMap(operationDiscussionContent, operationDiscussionLabel);
|
|
|
+ Map<String, OperationRecordDoc> operationRecordDocMap = getOperationRecordDocMap(operationRecordContent, operationRecordLabel);
|
|
|
+ Map<String, PreoperativeDiscussionDoc> preoperativeDiscussionDocMap = getPreoperativeDiscussionDocMap(preoperativeDiscussionContent, preoperativeDiscussionLabel);
|
|
|
|
|
|
- String operationDiscussionContent, preoperativeDiscussionContent, operationRecordContent;
|
|
|
- Map<String, String> operationDiscussionStructureMap, preoperativeDiscussionStructureMap, operationRecordStructureMap;
|
|
|
- for (Map<String, String> operation : operations) {
|
|
|
+ Set<String> operationNameSet = Sets.newHashSet();
|
|
|
+ operationNameSet.addAll(operationDiscussionDocMap.keySet());
|
|
|
+ operationNameSet.addAll(operationRecordDocMap.keySet());
|
|
|
+ operationNameSet.addAll(preoperativeDiscussionDocMap.keySet());
|
|
|
+
|
|
|
+ operationNameSet.forEach(operationName -> {
|
|
|
OperationDoc operationDoc = new OperationDoc();
|
|
|
+ operationDoc.setOperationName(operationName);
|
|
|
+ operationDoc.setOperationDiscussionDoc(operationDiscussionDocMap.get(operationName));
|
|
|
+ operationDoc.setOperationRecordDoc(operationRecordDocMap.get(operationName));
|
|
|
+ operationDoc.setPreoperativeDiscussionDoc(preoperativeDiscussionDocMap.get(operationName));
|
|
|
+ retList.add(operationDoc);
|
|
|
+ });
|
|
|
|
|
|
- operationDiscussionContent = operation.get("术后首次病程及谈话记录");
|
|
|
- if (StringUtil.isNotBlank(operationDiscussionContent)) {
|
|
|
- operationDiscussionStructureMap =
|
|
|
- Preproc.extract_doc_pub(
|
|
|
- false,
|
|
|
- ListUtil.isEmpty(operationDiscussionLabel) ? ModelStandardKeys.operationDiscussion : operationDiscussionLabel,
|
|
|
- operationDiscussionContent
|
|
|
- );
|
|
|
- OperationDiscussionDoc operationDiscussionDoc = ModelDocGenerate.operationDiscussionDocGen(operationDiscussionStructureMap);
|
|
|
- operationDiscussionDoc.setText(operationDiscussionContent);
|
|
|
- operationDoc.setOperationDiscussionDoc(operationDiscussionDoc);
|
|
|
- }
|
|
|
+ return retList;
|
|
|
+ }
|
|
|
|
|
|
- operationRecordContent = operation.get("手术记录");
|
|
|
- if (StringUtil.isNotBlank(operationRecordContent)) {
|
|
|
- operationRecordStructureMap =
|
|
|
- Preproc.extract_doc_pub(
|
|
|
- false,
|
|
|
- ListUtil.isEmpty(operationRecordLabel) ? ModelStandardKeys.operationRecord : operationRecordLabel,
|
|
|
- operationRecordContent
|
|
|
- );
|
|
|
- OperationRecordDoc operationRecordDoc = ModelDocGenerate.operationRecordDocGen(operationRecordStructureMap);
|
|
|
- operationRecordDoc.setText(operationRecordContent);
|
|
|
- operationDoc.setOperationRecordDoc(operationRecordDoc);
|
|
|
+ private Map<String, OperationDiscussionDoc> getOperationDiscussionDocMap(List<String> contents, List<String> label) {
|
|
|
+ Map<String, OperationDiscussionDoc> retMap = Maps.newHashMap();
|
|
|
+ if (ListUtil.isEmpty(contents)) {
|
|
|
+ return retMap;
|
|
|
+ }
|
|
|
+ label = ListUtil.isEmpty(label) ? ModelStandardKeys.operationDiscussion : label;
|
|
|
+ Map<String, String> operationDiscussionStructureMap = null;
|
|
|
+ int index = 1;
|
|
|
+ String operationName = null;
|
|
|
+ for (String content : contents) {
|
|
|
+ if (StringUtil.isBlank(content)) {
|
|
|
+ continue;
|
|
|
}
|
|
|
+ operationDiscussionStructureMap = Preproc.extract_doc_pub(false, label, content);
|
|
|
+ operationName = index + "";
|
|
|
+ OperationDiscussionDoc operationDiscussionDoc = ModelDocGenerate.operationDiscussionDocGen(operationDiscussionStructureMap);
|
|
|
+ operationDiscussionDoc.setText(content);
|
|
|
+ operationDiscussionDoc.setOperationName(operationName);
|
|
|
+ retMap.put(operationName, operationDiscussionDoc);
|
|
|
+ index++;
|
|
|
+ }
|
|
|
+ return retMap;
|
|
|
+ }
|
|
|
|
|
|
- preoperativeDiscussionContent = operation.get("术前讨论、术前小结");
|
|
|
- if (StringUtil.isNotBlank(preoperativeDiscussionContent)) {
|
|
|
- preoperativeDiscussionStructureMap =
|
|
|
- Preproc.extract_doc_pub(
|
|
|
- false,
|
|
|
- ListUtil.isEmpty(preoperativeDiscussionLabel) ? ModelStandardKeys.preoperativeDiscussion : preoperativeDiscussionLabel,
|
|
|
- preoperativeDiscussionContent
|
|
|
- );
|
|
|
- preoperativeDiscussionStructureMap.put("拟行术式", preoperativeDiscussionStructureMap.get("拟施手术方式、名称及可能的变更"));
|
|
|
- preoperativeDiscussionStructureMap.remove("拟施手术方式、名称及可能的变更");
|
|
|
- preoperativeDiscussionStructureMap.put("手术指征", preoperativeDiscussionStructureMap.get("手术指征与禁忌征"));
|
|
|
- preoperativeDiscussionStructureMap.remove("手术指征与禁忌征");
|
|
|
- preoperativeDiscussionStructureMap.put("可能意外和防范措施", preoperativeDiscussionStructureMap.get("主要术中、术后风险及防范措施"));
|
|
|
- preoperativeDiscussionStructureMap.remove("主要术中、术后风险及防范措施");
|
|
|
- preoperativeDiscussionStructureMap.put("术前术后注意事项", preoperativeDiscussionStructureMap.get("术中、术后注意事项(含护理事项)"));
|
|
|
- preoperativeDiscussionStructureMap.remove("术中、术后注意事项(含护理事项)");
|
|
|
- preoperativeDiscussionStructureMap.put("麻醉方式", preoperativeDiscussionStructureMap.get("拟施麻醉方式"));
|
|
|
- preoperativeDiscussionStructureMap.remove("拟施麻醉方式");
|
|
|
- preoperativeDiscussionStructureMap.put("术前准备内容", preoperativeDiscussionStructureMap.get("术前特殊准备"));
|
|
|
- preoperativeDiscussionStructureMap.remove("术前特殊准备");
|
|
|
- PreoperativeDiscussionDoc preoperativeDiscussionDoc = ModelDocGenerate.preoperativeDiscussionDocGen(preoperativeDiscussionStructureMap);
|
|
|
- preoperativeDiscussionDoc.setText(preoperativeDiscussionContent);
|
|
|
- operationDoc.setPreoperativeDiscussionDoc(preoperativeDiscussionDoc);
|
|
|
+ private Map<String, OperationRecordDoc> getOperationRecordDocMap(List<String> contents, List<String> label) {
|
|
|
+ Map<String, OperationRecordDoc> retMap = Maps.newHashMap();
|
|
|
+ if (ListUtil.isEmpty(contents)) {
|
|
|
+ return retMap;
|
|
|
+ }
|
|
|
+ label = ListUtil.isEmpty(label) ? ModelStandardKeys.operationRecord : label;
|
|
|
+ Map<String, String> operationRecordStructureMap = null;
|
|
|
+ int index = 1;
|
|
|
+ String operationName = null;
|
|
|
+ for (String content : contents) {
|
|
|
+ if (StringUtil.isBlank(content)) {
|
|
|
+ continue;
|
|
|
}
|
|
|
+ operationRecordStructureMap = Preproc.extract_doc_pub(false, label, content);
|
|
|
+ operationName = index + "";
|
|
|
+ OperationRecordDoc operationRecordDoc = ModelDocGenerate.operationRecordDocGen(operationRecordStructureMap);
|
|
|
+ operationRecordDoc.setText(content);
|
|
|
+ operationRecordDoc.setOperationName(operationName);
|
|
|
+ retMap.put(operationName, operationRecordDoc);
|
|
|
+ index++;
|
|
|
+ }
|
|
|
+ return retMap;
|
|
|
+ }
|
|
|
|
|
|
- retList.add(operationDoc);
|
|
|
+ private Map<String, PreoperativeDiscussionDoc> getPreoperativeDiscussionDocMap(List<String> contents, List<String> label) {
|
|
|
+ Map<String, PreoperativeDiscussionDoc> retMap = Maps.newHashMap();
|
|
|
+ if (ListUtil.isEmpty(contents)) {
|
|
|
+ return retMap;
|
|
|
}
|
|
|
- return retList;
|
|
|
+ label = ListUtil.isEmpty(label) ? ModelStandardKeys.preoperativeDiscussion : label;
|
|
|
+ Map<String, String> preoperativeDiscussionStructureMap = null;
|
|
|
+ int index = 1;
|
|
|
+ String operationName = null;
|
|
|
+ for (String content : contents) {
|
|
|
+ if (StringUtil.isBlank(content)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ preoperativeDiscussionStructureMap = Preproc.extract_doc_pub(false, label, content);
|
|
|
+ operationName = index + "";
|
|
|
+ preoperativeDiscussionStructureMap.put("拟行术式", preoperativeDiscussionStructureMap.get("拟施手术方式、名称及可能的变更"));
|
|
|
+ preoperativeDiscussionStructureMap.remove("拟施手术方式、名称及可能的变更");
|
|
|
+ preoperativeDiscussionStructureMap.put("手术指征", preoperativeDiscussionStructureMap.get("手术指征与禁忌征"));
|
|
|
+ preoperativeDiscussionStructureMap.remove("手术指征与禁忌征");
|
|
|
+ preoperativeDiscussionStructureMap.put("可能意外和防范措施", preoperativeDiscussionStructureMap.get("主要术中、术后风险及防范措施"));
|
|
|
+ preoperativeDiscussionStructureMap.remove("主要术中、术后风险及防范措施");
|
|
|
+ preoperativeDiscussionStructureMap.put("术前术后注意事项", preoperativeDiscussionStructureMap.get("术中、术后注意事项(含护理事项)"));
|
|
|
+ preoperativeDiscussionStructureMap.remove("术中、术后注意事项(含护理事项)");
|
|
|
+ preoperativeDiscussionStructureMap.put("麻醉方式", preoperativeDiscussionStructureMap.get("拟施麻醉方式"));
|
|
|
+ preoperativeDiscussionStructureMap.remove("拟施麻醉方式");
|
|
|
+ preoperativeDiscussionStructureMap.put("术前准备内容", preoperativeDiscussionStructureMap.get("术前特殊准备"));
|
|
|
+ preoperativeDiscussionStructureMap.remove("术前特殊准备");
|
|
|
+ PreoperativeDiscussionDoc preoperativeDiscussionDoc = ModelDocGenerate.preoperativeDiscussionDocGen(preoperativeDiscussionStructureMap);
|
|
|
+ preoperativeDiscussionDoc.setText(content);
|
|
|
+ preoperativeDiscussionDoc.setOperationName(operationName);
|
|
|
+ retMap.put(operationName, preoperativeDiscussionDoc);
|
|
|
+ index++;
|
|
|
+ }
|
|
|
+ return retMap;
|
|
|
}
|
|
|
|
|
|
}
|