|
@@ -9,6 +9,8 @@ import com.lantone.qc.kernel.structure.ai.model.EntityEnum;
|
|
import com.lantone.qc.kernel.structure.ai.model.Lemma;
|
|
import com.lantone.qc.kernel.structure.ai.model.Lemma;
|
|
import com.lantone.qc.kernel.structure.ai.process.*;
|
|
import com.lantone.qc.kernel.structure.ai.process.*;
|
|
import com.lantone.qc.kernel.util.CatalogueUtil;
|
|
import com.lantone.qc.kernel.util.CatalogueUtil;
|
|
|
|
+import com.lantone.qc.kernel.util.KernelConstants;
|
|
|
|
+import com.lantone.qc.kernel.util.RedisUtil;
|
|
import com.lantone.qc.pub.Content;
|
|
import com.lantone.qc.pub.Content;
|
|
import com.lantone.qc.pub.model.InputInfo;
|
|
import com.lantone.qc.pub.model.InputInfo;
|
|
import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
|
|
import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
|
|
@@ -16,6 +18,9 @@ import com.lantone.qc.pub.model.entity.*;
|
|
import com.lantone.qc.pub.model.label.*;
|
|
import com.lantone.qc.pub.model.label.*;
|
|
import com.lantone.qc.pub.model.vo.CRFVo;
|
|
import com.lantone.qc.pub.model.vo.CRFVo;
|
|
import com.lantone.qc.pub.util.StringUtil;
|
|
import com.lantone.qc.pub.util.StringUtil;
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
|
@@ -25,6 +30,7 @@ import java.util.*;
|
|
* @Author : 楼辉荣
|
|
* @Author : 楼辉荣
|
|
* @Date: 2020-03-03 18:58
|
|
* @Date: 2020-03-03 18:58
|
|
*/
|
|
*/
|
|
|
|
+@Component
|
|
public class BeHospitalizedAI {
|
|
public class BeHospitalizedAI {
|
|
/**
|
|
/**
|
|
* FirstCourseRecord_cx[病历首程]
|
|
* FirstCourseRecord_cx[病历首程]
|
|
@@ -39,6 +45,9 @@ public class BeHospitalizedAI {
|
|
public static String entityRelationObject = "entity_relation_object";
|
|
public static String entityRelationObject = "entity_relation_object";
|
|
public static String outputs = "outputs";
|
|
public static String outputs = "outputs";
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ RedisUtil redisUtil;
|
|
|
|
+
|
|
public void medrec(InputInfo inputInfo, CRFServiceClient crfServiceClient) {
|
|
public void medrec(InputInfo inputInfo, CRFServiceClient crfServiceClient) {
|
|
JSONArray crfContent = new JSONArray();
|
|
JSONArray crfContent = new JSONArray();
|
|
BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
|
|
BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
|
|
@@ -93,8 +102,8 @@ public class BeHospitalizedAI {
|
|
putFamilyCrfData(midData.getJSONObject(Content.family), inputInfo);
|
|
putFamilyCrfData(midData.getJSONObject(Content.family), inputInfo);
|
|
//处理婚育史
|
|
//处理婚育史
|
|
putMaritalCrfData(midData.getJSONObject(Content.marriage), inputInfo);
|
|
putMaritalCrfData(midData.getJSONObject(Content.marriage), inputInfo);
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ //初步诊断
|
|
|
|
+ putInitialDiagCrfData(midData.getJSONObject(Content.pridiag), inputInfo);
|
|
// //存放CRF模型既往史、家族史返回数据
|
|
// //存放CRF模型既往史、家族史返回数据
|
|
// putAllCrfData(midData.getJSONObject(Content.past), crfOut);
|
|
// putAllCrfData(midData.getJSONObject(Content.past), crfOut);
|
|
// putAllCrfData(midData.getJSONObject(Content.family), crfOut);
|
|
// putAllCrfData(midData.getJSONObject(Content.family), crfOut);
|
|
@@ -228,6 +237,43 @@ public class BeHospitalizedAI {
|
|
inputInfo.getBeHospitalizedDoc().setMenstrualLabel(menstrualLabel);
|
|
inputInfo.getBeHospitalizedDoc().setMenstrualLabel(menstrualLabel);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 初步诊断信息提取
|
|
|
|
+ *
|
|
|
|
+ * @param jsonObject
|
|
|
|
+ * @param inputInfo
|
|
|
|
+ */
|
|
|
|
+ public void putInitialDiagCrfData(JSONObject jsonObject, InputInfo inputInfo) {
|
|
|
|
+ if (jsonObject == null) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ JSONObject aiOut = jsonObject.getJSONObject(entityRelationObject).getJSONObject(BeHospitalizedAI.outputs);
|
|
|
|
+ //诊断信息
|
|
|
|
+ EntityProcessDiag entityProcessDiag = new EntityProcessDiag();
|
|
|
|
+// List<Diag> diags = entityProcessDiag.extractEntity(aiOut);
|
|
|
|
+//
|
|
|
|
+// InitialDiagLabel initialDiagLabel = new InitialDiagLabel();
|
|
|
|
+// initialDiagLabel.setText(inputInfo.getBeHospitalizedDoc().getInitialDiagLabel().getText());
|
|
|
|
+// initialDiagLabel.setDiags(diags);
|
|
|
|
+// inputInfo.getBeHospitalizedDoc().setInitialDiagLabel(initialDiagLabel);
|
|
|
|
+
|
|
|
|
+ //因为关系抽取未标注完成,先用规则
|
|
|
|
+ String diagString = inputInfo.getBeHospitalizedDoc().getInitialDiagLabel().getText();
|
|
|
|
+ if (StringUtils.isNotEmpty(diagString)) {
|
|
|
|
+ String[] diagArray = diagString.split(",");
|
|
|
|
+ Map<String, String> diagRedisMap = (Map<String, String>)redisUtil.get(KernelConstants.CONCEPT_DIAG_HOSPITAL_REFLECT);
|
|
|
|
+ List<Diag> diags = new ArrayList<>();
|
|
|
|
+ for (String d : diagArray) {
|
|
|
|
+ Diag diag = new Diag();
|
|
|
|
+ diag.setHospitalDiagName(d); //存放医院原始疾病名称
|
|
|
|
+ diag.setName(diagRedisMap.get(d) == null ? "" : diagRedisMap.get(d));//映射到我们的标准疾病名称
|
|
|
|
+ diags.add(diag);
|
|
|
|
+ }
|
|
|
|
+ InitialDiagLabel initialDiagLabel = new InitialDiagLabel();
|
|
|
|
+ initialDiagLabel.setDiags(diags);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 关系抽取临床表现信息
|
|
* 关系抽取临床表现信息
|
|
*
|
|
*
|