|
@@ -3,6 +3,7 @@ package com.lantone.qc.kernel.structure.ai;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.lantone.qc.kernel.client.CRFServiceClient;
|
|
|
+import com.lantone.qc.kernel.client.SimilarityServiceClient;
|
|
|
import com.lantone.qc.kernel.structure.ai.process.EntityProcessClinic;
|
|
|
import com.lantone.qc.kernel.structure.ai.process.EntityProcessDiag;
|
|
|
import com.lantone.qc.kernel.structure.ai.process.EntityProcessTreatPlan;
|
|
@@ -11,6 +12,7 @@ import com.lantone.qc.pub.model.InputInfo;
|
|
|
import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
|
|
|
import com.lantone.qc.pub.model.entity.Diag;
|
|
|
import com.lantone.qc.pub.model.label.*;
|
|
|
+import com.lantone.qc.pub.util.StringUtil;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
|
import java.util.Arrays;
|
|
@@ -26,13 +28,14 @@ public class FirstCourseRecordAI extends ModelAI {
|
|
|
/**
|
|
|
*
|
|
|
*/
|
|
|
- public static List<String> medicalTextType = Arrays.asList("FirstCoursera_cx", "Diagnoses_cx","FirstCourseTreatment_cx");
|
|
|
+ public static List<String> medicalTextType = Arrays.asList("FirstCoursera_cx", "Diagnoses_cx", "FirstCourseTreatment_cx");
|
|
|
public static String entityRelationObject = "entity_relation_object";
|
|
|
public static String outputs = "outputs";
|
|
|
public static String content = "content";
|
|
|
|
|
|
- public void medrec(InputInfo inputInfo, CRFServiceClient crfServiceClient) {
|
|
|
+ public void medrec(InputInfo inputInfo, CRFServiceClient crfServiceClient, SimilarityServiceClient similarityServiceClient) {
|
|
|
JSONArray crfContent = new JSONArray();
|
|
|
+ JSONArray similarContent = new JSONArray();
|
|
|
FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
|
|
|
if (firstCourseRecordDoc != null && StringUtils.isNotEmpty(firstCourseRecordDoc.getText())) {
|
|
|
//病历特点
|
|
@@ -46,12 +49,20 @@ public class FirstCourseRecordAI extends ModelAI {
|
|
|
//诊疗计划
|
|
|
putContent(crfContent, medicalTextType.get(2), firstCourseRecordDoc.getTreatPlanLabel().getText(), Content.treat_plan);
|
|
|
|
|
|
+ //病历特点与现病史比较相似度
|
|
|
+ if (inputInfo.getBeHospitalizedDoc() != null && StringUtil.isNotBlank(inputInfo.getBeHospitalizedDoc().getPresentLabel().getText())) {
|
|
|
+ putContent(similarContent, firstCourseRecordDoc.getCaseCharacteristicLabel().getText(),inputInfo.getBeHospitalizedDoc().getPresentLabel().getText());
|
|
|
+ }
|
|
|
+
|
|
|
JSONObject midData = loadAI(crfContent, crfServiceClient);//crf返回数据
|
|
|
putCaseCharacteristicCrfData(midData.getJSONObject(Content.case_feature), inputInfo);//处理病历特点
|
|
|
putInitialDiagCrfData(midData.getJSONObject(Content.initial_diag), inputInfo);//处理初步诊断
|
|
|
putDiagnosisCrfData(midData.getJSONObject(Content.diag_basis), inputInfo);//处理诊断依据
|
|
|
putDifferentialDiagCrfData(midData.getJSONObject(Content.differential_diag_basis), inputInfo);//处理鉴别诊断
|
|
|
putTreatPlanCrfData(midData.getJSONObject(Content.treat_plan), inputInfo);//处理诊疗计划
|
|
|
+
|
|
|
+ double likeRate = loadSimilarAI(similarContent, similarityServiceClient);
|
|
|
+ putCaseCharacteristicSimilarData(likeRate,inputInfo);//存放与现病史文本相似度
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -70,6 +81,17 @@ public class FirstCourseRecordAI extends ModelAI {
|
|
|
inputInfo.getFirstCourseRecordDoc().getCaseCharacteristicLabel().setClinicals(presentLabel.getClinicals());
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 病历特点与现病史相似度
|
|
|
+ *
|
|
|
+ * @param likeRate
|
|
|
+ * @param inputInfo
|
|
|
+ */
|
|
|
+ public void putCaseCharacteristicSimilarData(double likeRate, InputInfo inputInfo) {
|
|
|
+ //存放与现病史文本相似度
|
|
|
+ inputInfo.getFirstCourseRecordDoc().getCaseCharacteristicLabel().setLikeRate(likeRate);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 初步诊断
|
|
|
*
|