|
@@ -64,129 +64,131 @@ public class BeHospitalizedAI extends ModelAI {
|
|
|
JSONArray crfContent = new JSONArray();
|
|
|
BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
|
|
|
if (beHospitalizedDoc != null) {
|
|
|
- String chief_text = beHospitalizedDoc.getChiefLabel().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 revised_diag_text = beHospitalizedDoc.getRevisedDiagLabel().getText(); //修正诊断
|
|
|
- String supple_diag_text = beHospitalizedDoc.getSuppleDiagLabel().getText(); //补充诊断
|
|
|
- //月经史
|
|
|
- String menstrual_text = beHospitalizedDoc.getMenstrualLabel().getText();
|
|
|
- //婚育史
|
|
|
- String marital_text = beHospitalizedDoc.getMaritalLabel().getText();
|
|
|
- //一般体格检查
|
|
|
- String vital_text = beHospitalizedDoc.getVitalLabel().getText();
|
|
|
- //专科体格检查
|
|
|
- String vitalSpecial_text = beHospitalizedDoc.getVitalLabelSpecial().getText();
|
|
|
- if (beHospitalizedDoc.getChiefLabel().isCrfLabel()) {
|
|
|
- if (StringUtil.isNotBlank(chief_text)) {
|
|
|
- chief_text = "主诉:" + StringUtil.removeBlank(chief_text);//主诉入参 文本前需加 “主诉:”
|
|
|
- /* 2020-06-08修改主诉模型为现病史模型 */
|
|
|
- putContent(crfContent, medicalTextType.get(7), chief_text, Content.chief); //主诉
|
|
|
+ /* 主诉 */
|
|
|
+ if (beHospitalizedDoc.getChiefLabel() != null && beHospitalizedDoc.getChiefLabel().isCrfLabel()) {
|
|
|
+ String chiefText = beHospitalizedDoc.getChiefLabel().getText();
|
|
|
+ if (StringUtil.isNotBlank(chiefText)) {
|
|
|
+ chiefText = "主诉:" + StringUtil.removeBlank(chiefText);//主诉入参 文本前需加 "主诉:"
|
|
|
+ putContent(crfContent, medicalTextType.get(7), chiefText, Content.chief);/* 2020-06-08修改主诉模型为现病史模型 */
|
|
|
}
|
|
|
}
|
|
|
- if (beHospitalizedDoc.getPresentLabel().isCrfLabel()) {
|
|
|
- putContent(crfContent, medicalTextType.get(7), present_text, Content.present);//现病史
|
|
|
+ /* 现病史 */
|
|
|
+ if (beHospitalizedDoc.getPresentLabel() != null && beHospitalizedDoc.getPresentLabel().isCrfLabel()) {
|
|
|
+ String presentText = beHospitalizedDoc.getPresentLabel().getText();
|
|
|
+ putContent(crfContent, medicalTextType.get(7), presentText, Content.present);
|
|
|
}
|
|
|
- if (beHospitalizedDoc.getVitalLabelSpecial().isCrfLabel()) {
|
|
|
- putContent(crfContent, medicalTextType.get(3), vitalSpecial_text, Content.special_exam);//专科检查
|
|
|
+ /* 既往史 */
|
|
|
+ if (beHospitalizedDoc.getPastLabel() != null && beHospitalizedDoc.getPastLabel().isCrfLabel()) {
|
|
|
+ String pastText = beHospitalizedDoc.getPastLabel().getText();
|
|
|
+ putContent(crfContent, medicalTextType.get(1), pastText, Content.past);
|
|
|
}
|
|
|
- if (beHospitalizedDoc.getPastLabel().isCrfLabel()) {
|
|
|
- putContent(crfContent, medicalTextType.get(1), past_text, Content.past);//既往史
|
|
|
- }
|
|
|
- if (beHospitalizedDoc.getFamilyLabel().isCrfLabel()) {
|
|
|
- putContent(crfContent, medicalTextType.get(1), family_text, Content.family);//家族史
|
|
|
+ /* 月经史文本需从个人史截取一部分文本拼接 */
|
|
|
+ String concatMenstrual = "";
|
|
|
+ /* 个人史 */
|
|
|
+ if (beHospitalizedDoc.getPersonalLabel() != null && beHospitalizedDoc.getPersonalLabel().isCrfLabel()) {
|
|
|
+ String personalText = beHospitalizedDoc.getPersonalLabel().getText();
|
|
|
+ putContent(crfContent, medicalTextType.get(2), personalText, Content.personal);
|
|
|
+ concatMenstrual = getConcatMenstrual(concatMenstrual, personalText);
|
|
|
}
|
|
|
- if (beHospitalizedDoc.getVitalLabel().isCrfLabel()) {
|
|
|
- putContent(crfContent, medicalTextType.get(4), vital_text, Content.phys_exam);//存放一般查体
|
|
|
+ /* 婚育史 */
|
|
|
+ if (beHospitalizedDoc.getMaritalLabel() != null && beHospitalizedDoc.getMaritalLabel().isCrfLabel()) {
|
|
|
+ String maritalText = beHospitalizedDoc.getMaritalLabel().getText();
|
|
|
+ putContent(crfContent, medicalTextType.get(2), maritalText, Content.marriage);
|
|
|
}
|
|
|
- if (beHospitalizedDoc.getPersonalLabel().isCrfLabel()) {
|
|
|
- putContent(crfContent, medicalTextType.get(2), personal_text, Content.personal);//个人史
|
|
|
+ /* 月经史 */
|
|
|
+ if (beHospitalizedDoc.getMenstrualLabel() != null && beHospitalizedDoc.getMenstrualLabel().isCrfLabel()) {
|
|
|
+ String menstrualText = beHospitalizedDoc.getMenstrualLabel().getText();
|
|
|
+ putContent(crfContent, medicalTextType.get(2), concatMenstrual, menstrualText, Content.menses);
|
|
|
}
|
|
|
- //月经史
|
|
|
- String concatMenstrual = "";
|
|
|
- if (personal_text != null) {
|
|
|
- if (personal_text.length() > 30) {
|
|
|
- concatMenstrual = personal_text.substring(personal_text.length() - 30);
|
|
|
- } else {
|
|
|
- concatMenstrual = personal_text;
|
|
|
- }
|
|
|
+ /* 家族史 */
|
|
|
+ if (beHospitalizedDoc.getFamilyLabel() != null && beHospitalizedDoc.getFamilyLabel().isCrfLabel()) {
|
|
|
+ String familyText = beHospitalizedDoc.getFamilyLabel().getText();
|
|
|
+ putContent(crfContent, medicalTextType.get(1), familyText, Content.family);
|
|
|
}
|
|
|
- if (beHospitalizedDoc.getMenstrualLabel().isCrfLabel()) {
|
|
|
- putContent(crfContent, medicalTextType.get(2), concatMenstrual, menstrual_text, Content.menses);//月经史
|
|
|
+ /* 辅助检查(暂用主诉现病史模型,之后会新训练单独模型再做修改) */
|
|
|
+ if (beHospitalizedDoc.getPacsLabel() != null && beHospitalizedDoc.getPacsLabel().isCrfLabel()) {
|
|
|
+ String pacsText = beHospitalizedDoc.getPacsLabel().getText();
|
|
|
+ putContent(crfContent, medicalTextType.get(3), pacsText, Content.pacs);
|
|
|
}
|
|
|
- if (beHospitalizedDoc.getMaritalLabel().isCrfLabel()) {
|
|
|
- putContent(crfContent, medicalTextType.get(2), marital_text, Content.marriage);//婚育史
|
|
|
+ /* 专科检查(专科体格检查) */
|
|
|
+ if (beHospitalizedDoc.getVitalLabelSpecial() != null && beHospitalizedDoc.getVitalLabelSpecial().isCrfLabel()) {
|
|
|
+ String vitalSpecialText = beHospitalizedDoc.getVitalLabelSpecial().getText();
|
|
|
+ putContent(crfContent, medicalTextType.get(3), vitalSpecialText, Content.special_exam);
|
|
|
}
|
|
|
- if (beHospitalizedDoc.getPacsLabel().isCrfLabel()) {
|
|
|
- putContent(crfContent, medicalTextType.get(3), pacs_text, Content.pacs);//辅助检查(暂用主诉现病史模型,之后会新训练单独模型再做修改)
|
|
|
+ /* 一般体格检查(存放一般查体) */
|
|
|
+ if (beHospitalizedDoc.getVitalLabel() != null && beHospitalizedDoc.getVitalLabel().isCrfLabel()) {
|
|
|
+ String vitalText = beHospitalizedDoc.getVitalLabel().getText();
|
|
|
+ putContent(crfContent, medicalTextType.get(4), vitalText, Content.phys_exam);
|
|
|
}
|
|
|
- if (beHospitalizedDoc.getInitialDiagLabel().isCrfLabel()) {
|
|
|
- if (StringUtil.isNotBlank(initial_diag_text)) {
|
|
|
+ /* 初步诊断 */
|
|
|
+ if (beHospitalizedDoc.getInitialDiagLabel() != null && beHospitalizedDoc.getInitialDiagLabel().isCrfLabel()) {
|
|
|
+ String initialDiagText = beHospitalizedDoc.getInitialDiagLabel().getText();
|
|
|
+ if (StringUtil.isNotBlank(initialDiagText)) {
|
|
|
/*initial_diag_text = CatalogueUtil.removeBetweenWordSpace(initial_diag_text);*/
|
|
|
- putContent(crfContent, medicalTextType.get(6), initial_diag_text, Content.initial_diag);//初步诊断
|
|
|
+ putContent(crfContent, medicalTextType.get(6), initialDiagText, Content.initial_diag);
|
|
|
}
|
|
|
}
|
|
|
- if (StringUtils.isNotEmpty(revised_diag_text) && beHospitalizedDoc.getRevisedDiagLabel().isCrfLabel()) {
|
|
|
- //修正诊断
|
|
|
+ /* 修正诊断 */
|
|
|
+ if (beHospitalizedDoc.getRevisedDiagLabel() != null && beHospitalizedDoc.getRevisedDiagLabel().isCrfLabel()) {
|
|
|
+ String revisedDiagText = beHospitalizedDoc.getRevisedDiagLabel().getText();
|
|
|
/*if (CatalogueUtil.numberExist(initial_diag_text)) {
|
|
|
revised_diag_text = CatalogueUtil.removeBetweenWordSpace(revised_diag_text);
|
|
|
}*/
|
|
|
- putContent(crfContent, medicalTextType.get(6), revised_diag_text, Content.revised_diag);
|
|
|
+ putContent(crfContent, medicalTextType.get(6), revisedDiagText, Content.revised_diag);
|
|
|
}
|
|
|
- if (StringUtils.isNotEmpty(supple_diag_text) && beHospitalizedDoc.getSuppleDiagLabel().isCrfLabel()) {
|
|
|
- //补充诊断
|
|
|
+ /* 补充诊断 */
|
|
|
+ if (beHospitalizedDoc.getSuppleDiagLabel() != null && beHospitalizedDoc.getSuppleDiagLabel().isCrfLabel()) {
|
|
|
+ String suppleDiagText = beHospitalizedDoc.getSuppleDiagLabel().getText();
|
|
|
/*if (CatalogueUtil.numberExist(initial_diag_text)) {
|
|
|
supple_diag_text = CatalogueUtil.removeBetweenWordSpace(supple_diag_text);
|
|
|
}*/
|
|
|
- putContent(crfContent, medicalTextType.get(6), supple_diag_text, Content.supple_diag);
|
|
|
+ putContent(crfContent, medicalTextType.get(6), suppleDiagText, Content.supple_diag);
|
|
|
}
|
|
|
+
|
|
|
JSONObject midData = loadAI(inputInfo.isUseCrfCache(), inputInfo.getMedicalRecordInfoDoc().getStructureMap().get("behospitalCode"), crfContent, crfServiceClient);
|
|
|
- //处理主诉
|
|
|
- if (beHospitalizedDoc.getChiefLabel().isCrfLabel()) {
|
|
|
+
|
|
|
+ /* 处理主诉 */
|
|
|
+ if (beHospitalizedDoc.getChiefLabel() != null && beHospitalizedDoc.getChiefLabel().isCrfLabel()) {
|
|
|
putChiefCrfData(midData.getJSONObject(Content.chief), inputInfo);
|
|
|
}
|
|
|
- //处理现病史
|
|
|
- if (beHospitalizedDoc.getPresentLabel().isCrfLabel()) {
|
|
|
+ /* 处理现病史 */
|
|
|
+ if (beHospitalizedDoc.getPresentLabel() != null && beHospitalizedDoc.getPresentLabel().isCrfLabel()) {
|
|
|
putPresentCrfData(midData.getJSONObject(Content.present), inputInfo);
|
|
|
}
|
|
|
- //处理既往史
|
|
|
- if (beHospitalizedDoc.getPastLabel().isCrfLabel()) {
|
|
|
+ /* 处理既往史 */
|
|
|
+ if (beHospitalizedDoc.getPastLabel() != null && beHospitalizedDoc.getPastLabel().isCrfLabel()) {
|
|
|
putPastCrfData(midData.getJSONObject(Content.past), inputInfo);
|
|
|
}
|
|
|
- //处理个人史
|
|
|
- if (beHospitalizedDoc.getPersonalLabel().isCrfLabel()) {
|
|
|
+ /* 处理个人史 */
|
|
|
+ if (beHospitalizedDoc.getPersonalLabel() != null && beHospitalizedDoc.getPersonalLabel().isCrfLabel()) {
|
|
|
putPersonalCrfData(midData.getJSONObject(Content.personal), inputInfo);
|
|
|
}
|
|
|
- //处理月经史
|
|
|
- if (beHospitalizedDoc.getMenstrualLabel().isCrfLabel()) {
|
|
|
+ /* 处理月经史 */
|
|
|
+ if (beHospitalizedDoc.getMenstrualLabel() != null && beHospitalizedDoc.getMenstrualLabel().isCrfLabel()) {
|
|
|
putMensesCrfData(midData.getJSONObject(Content.menses), inputInfo);
|
|
|
}
|
|
|
- //处理家族史
|
|
|
- if (beHospitalizedDoc.getFamilyLabel().isCrfLabel()) {
|
|
|
+ /* 处理家族史 */
|
|
|
+ if (beHospitalizedDoc.getFamilyLabel() != null && beHospitalizedDoc.getFamilyLabel().isCrfLabel()) {
|
|
|
putFamilyCrfData(midData.getJSONObject(Content.family), inputInfo);
|
|
|
}
|
|
|
- //处理婚育史
|
|
|
- if (beHospitalizedDoc.getMaritalLabel().isCrfLabel()) {
|
|
|
+ /* 处理婚育史 */
|
|
|
+ if (beHospitalizedDoc.getMaritalLabel() != null && beHospitalizedDoc.getMaritalLabel().isCrfLabel()) {
|
|
|
putMaritalCrfData(midData.getJSONObject(Content.marriage), inputInfo);
|
|
|
}
|
|
|
- //处理初步诊断
|
|
|
- if (beHospitalizedDoc.getInitialDiagLabel().isCrfLabel()) {
|
|
|
+ /* 处理初步诊断 */
|
|
|
+ if (beHospitalizedDoc.getInitialDiagLabel() != null && beHospitalizedDoc.getInitialDiagLabel().isCrfLabel()) {
|
|
|
putInitialDiagCrfData(midData.getJSONObject(Content.initial_diag), inputInfo);
|
|
|
}
|
|
|
- if (StringUtils.isNotEmpty(revised_diag_text) && beHospitalizedDoc.getRevisedDiagLabel().isCrfLabel()) {
|
|
|
- //处理修正诊断
|
|
|
+ /* 处理修正诊断 */
|
|
|
+ if (beHospitalizedDoc.getRevisedDiagLabel() != null && beHospitalizedDoc.getRevisedDiagLabel().isCrfLabel()) {
|
|
|
putRevisedDiagCrfData(midData.getJSONObject(Content.revised_diag), inputInfo);
|
|
|
}
|
|
|
- if (StringUtils.isNotEmpty(revised_diag_text) && beHospitalizedDoc.getSuppleDiagLabel().isCrfLabel()) {
|
|
|
- //处理补充诊断
|
|
|
+ /* 处理补充诊断 */
|
|
|
+ if (beHospitalizedDoc.getSuppleDiagLabel() != null && beHospitalizedDoc.getSuppleDiagLabel().isCrfLabel()) {
|
|
|
putSuppleDiagCrfData(midData.getJSONObject(Content.supple_diag), inputInfo);
|
|
|
}
|
|
|
- //处理辅助检查
|
|
|
- if (beHospitalizedDoc.getPacsLabel().isCrfLabel()) {
|
|
|
+ /* 处理辅助检查 */
|
|
|
+ if (beHospitalizedDoc.getPacsLabel() != null && beHospitalizedDoc.getPacsLabel().isCrfLabel()) {
|
|
|
putPacsCrfData(midData.getJSONObject(Content.pacs), inputInfo);
|
|
|
}
|
|
|
}
|
|
@@ -489,4 +491,22 @@ public class BeHospitalizedAI extends ModelAI {
|
|
|
List<Vital> vitals = entityProcessVital.extractEntity(aiOut);
|
|
|
return vitals;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 从个人史取最后30个字,拼接到月经史
|
|
|
+ *
|
|
|
+ * @param concatMenstrual
|
|
|
+ * @param personalText
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private String getConcatMenstrual(String concatMenstrual, String personalText) {
|
|
|
+ if (personalText != null) {
|
|
|
+ if (personalText.length() > 30) {
|
|
|
+ concatMenstrual = personalText.substring(personalText.length() - 30);
|
|
|
+ } else {
|
|
|
+ concatMenstrual = personalText;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return concatMenstrual;
|
|
|
+ }
|
|
|
}
|