|
@@ -50,12 +50,14 @@ public class BeHospitalizedAI {
|
|
|
BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
|
|
|
if (beHospitalizedDoc != null) {
|
|
|
String chief_text = beHospitalizedDoc.getChiefLabel().getText();
|
|
|
- String Personal_text = beHospitalizedDoc.getPersonalLabel().getText();
|
|
|
+ String personal_text = beHospitalizedDoc.getPersonalLabel().getText();
|
|
|
String family_text = beHospitalizedDoc.getFamilyLabel().getText();
|
|
|
String past_text = beHospitalizedDoc.getPastLabel().getText();
|
|
|
String present_text = beHospitalizedDoc.getPresentLabel().getText();
|
|
|
String pacs_text = beHospitalizedDoc.getPacsLabel().getText();
|
|
|
- String initial_diag_text = beHospitalizedDoc.getInitialDiagLabel().getText();
|
|
|
+ String initial_diag_text = beHospitalizedDoc.getInitialDiagLabel().getText(); //初步诊断
|
|
|
+ String revised_diag_text = beHospitalizedDoc.getRevisedDiagLabel().getText(); //修正诊断
|
|
|
+ String supple_diag_text = beHospitalizedDoc.getSuppleDiagLabel().getText(); //补充诊断
|
|
|
//月经史
|
|
|
String menstrual_text = beHospitalizedDoc.getMenstrualLabel().getText();
|
|
|
//婚育史
|
|
@@ -77,11 +79,13 @@ public class BeHospitalizedAI {
|
|
|
//存放一般查体
|
|
|
putContent(crfContent, medicalTextType.get(4), vital_text, Content.phys_exam);
|
|
|
//个人史
|
|
|
- putContent(crfContent, medicalTextType.get(2), Personal_text, Content.personal);
|
|
|
+ putContent(crfContent, medicalTextType.get(2), personal_text, Content.personal);
|
|
|
//月经史
|
|
|
String concatMenstrual = "";
|
|
|
- if (Personal_text.length() > 30) {
|
|
|
- concatMenstrual = Personal_text.substring(Personal_text.length() - 30);
|
|
|
+ if (personal_text.length() > 30) {
|
|
|
+ concatMenstrual = personal_text.substring(personal_text.length() - 30);
|
|
|
+ } else {
|
|
|
+ concatMenstrual = personal_text;
|
|
|
}
|
|
|
putContent(crfContent, medicalTextType.get(2), concatMenstrual, menstrual_text, Content.menses);
|
|
|
//婚育史
|
|
@@ -90,6 +94,14 @@ public class BeHospitalizedAI {
|
|
|
putContent(crfContent, medicalTextType.get(3), pacs_text, Content.pacs);
|
|
|
//初步诊断
|
|
|
putContent(crfContent, medicalTextType.get(6), initial_diag_text, Content.initial_diag);
|
|
|
+ if (StringUtils.isNotEmpty(revised_diag_text)) {
|
|
|
+ //修正诊断
|
|
|
+ putContent(crfContent, medicalTextType.get(6), revised_diag_text, Content.revised_diag);
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(supple_diag_text)) {
|
|
|
+ //补充诊断
|
|
|
+ putContent(crfContent, medicalTextType.get(6), supple_diag_text, Content.supple_diag);
|
|
|
+ }
|
|
|
//存储CRF完整所需结构数据
|
|
|
CRFVo crfVo = new CRFVo();
|
|
|
crfVo.setData(crfContent);
|
|
@@ -112,10 +124,16 @@ public class BeHospitalizedAI {
|
|
|
putMaritalCrfData(midData.getJSONObject(Content.marriage), inputInfo);
|
|
|
//处理初步诊断
|
|
|
putInitialDiagCrfData(midData.getJSONObject(Content.pridiag), inputInfo);
|
|
|
+ if (StringUtils.isNotEmpty(revised_diag_text)) {
|
|
|
+ //处理修正诊断
|
|
|
+ putInitialDiagCrfData(midData.getJSONObject(Content.revised_diag), inputInfo);
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(revised_diag_text)) {
|
|
|
+ //处理补充诊断
|
|
|
+ putInitialDiagCrfData(midData.getJSONObject(Content.supple_diag), inputInfo);
|
|
|
+ }
|
|
|
//处理辅助检查
|
|
|
putPacsCrfData(midData.getJSONObject(Content.pacs), inputInfo);
|
|
|
- //处理疾病
|
|
|
-// putPrimaryDiagCrfData(midData.getJSONObject(Content.primary_diag), inputInfo);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -245,31 +263,73 @@ public class BeHospitalizedAI {
|
|
|
* @param inputInfo
|
|
|
*/
|
|
|
public void putInitialDiagCrfData(JSONObject jsonObject, InputInfo inputInfo) {
|
|
|
- // if (jsonObject == null) {
|
|
|
- // return;
|
|
|
- // }
|
|
|
- // JSONObject aiOut = jsonObject.getJSONObject(entityRelationObject).getJSONObject(BeHospitalizedAI.outputs);
|
|
|
+ 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(",");
|
|
|
- List<Diag> diags = new ArrayList<>();
|
|
|
- for (String d : diagArray) {
|
|
|
- Diag diag = DiagEnhancer.create(d);
|
|
|
- diags.add(diag);
|
|
|
- }
|
|
|
- InitialDiagLabel initialDiagLabel = new InitialDiagLabel();
|
|
|
- initialDiagLabel.setDiags(diags);
|
|
|
+ List<Diag> diags = entityProcessDiag.extractEntity(aiOut);
|
|
|
+
|
|
|
+ DiagLabel initialDiagLabel = new DiagLabel();
|
|
|
+ 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(",");
|
|
|
+// List<Diag> diags = new ArrayList<>();
|
|
|
+// for (String d : diagArray) {
|
|
|
+// Diag diag = DiagEnhancer.create(d);
|
|
|
+// diags.add(diag);
|
|
|
+// }
|
|
|
+// InitialDiagLabel initialDiagLabel = new InitialDiagLabel();
|
|
|
+// initialDiagLabel.setDiags(diags);
|
|
|
+// }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修正诊断信息提取
|
|
|
+ *
|
|
|
+ * @param jsonObject
|
|
|
+ * @param inputInfo
|
|
|
+ */
|
|
|
+ public void putRevisedDiagCrfData(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);
|
|
|
+
|
|
|
+ DiagLabel revisedDiagLabel = new DiagLabel();
|
|
|
+ revisedDiagLabel.setText(inputInfo.getBeHospitalizedDoc().getRevisedDiagLabel().getText());
|
|
|
+ revisedDiagLabel.setDiags(diags);
|
|
|
+ inputInfo.getBeHospitalizedDoc().setRevisedDiagLabel(revisedDiagLabel);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 补充诊断信息提取
|
|
|
+ *
|
|
|
+ * @param jsonObject
|
|
|
+ * @param inputInfo
|
|
|
+ */
|
|
|
+ public void putSuppleDiagCrfData(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);
|
|
|
+
|
|
|
+ DiagLabel suppleDiagLabel = new DiagLabel();
|
|
|
+ suppleDiagLabel.setText(inputInfo.getBeHospitalizedDoc().getSuppleDiagLabel().getText());
|
|
|
+ suppleDiagLabel.setDiags(diags);
|
|
|
+ inputInfo.getBeHospitalizedDoc().setSuppleDiagLabel(suppleDiagLabel);
|
|
|
}
|
|
|
|
|
|
/**
|