|
@@ -22,85 +22,105 @@ import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* @ClassName : FIRP0178
|
|
|
- * @Description :出院其他诊断不完全
|
|
|
+ * @Description :出院其他诊断不完全(演示用)
|
|
|
* @Author : 胡敬
|
|
|
* @Date: 2020-03-16 14:01
|
|
|
*/
|
|
|
@Component
|
|
|
public class FIRP0178 extends QCCatalogue {
|
|
|
- @Autowired
|
|
|
- SimilarityServiceClient similarityServiceClient;
|
|
|
- @Autowired
|
|
|
- ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient;
|
|
|
+ // @Autowired
|
|
|
+ // SimilarityServiceClient similarityServiceClient;
|
|
|
+ // @Autowired
|
|
|
+ // ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient;
|
|
|
|
|
|
public void start(InputInfo inputInfo, OutputInfo outputInfo) {
|
|
|
status.set("0");
|
|
|
- if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getLeaveHospitalDoc() != null) {
|
|
|
- Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
|
|
|
- List<Map<String, String>> dischargeDiag = (List) firstpageStructureMap.get(Content.dischargeDiag);
|
|
|
- if (ListUtil.isEmpty(dischargeDiag)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- /* 病案首页出院小结诊断 除去主诊断*/
|
|
|
- List<String> firstpageLeaveDiags = getFirstPageDiag(dischargeDiag);
|
|
|
-
|
|
|
- DiagLabel leaveDiagLabel = inputInfo.getLeaveHospitalDoc().getLeaveDiagLabel();
|
|
|
- if (leaveDiagLabel == null) {
|
|
|
+ if (inputInfo.getBeHospitalizedDoc() == null || inputInfo.getFirstPageRecordDoc() == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
|
|
|
+ if (structureMap != null) {
|
|
|
+ String phone = structureMap.get("电话"); //电话
|
|
|
+ String name = structureMap.get("姓名"); //姓名
|
|
|
+ if (StringUtil.isBlank(name) || StringUtil.isBlank(phone)) {
|
|
|
return;
|
|
|
}
|
|
|
- List<Diag> leaveDiags = leaveDiagLabel.getDiags();
|
|
|
- List<String> leaveDiagsStr = putDiagToList(leaveDiags);
|
|
|
-
|
|
|
- /* 修改为疾病相似度模型 */
|
|
|
- ModelAI modelAI = new ModelAI();
|
|
|
- String infoStr = "";
|
|
|
- //最主要是给医生提醒,看是否有出院诊断漏写
|
|
|
- for (String leaveDiag : leaveDiagsStr) {
|
|
|
- JSONArray jsonArray = modelAI.loadChiefPresentSimilarAI(leaveDiag, firstpageLeaveDiags, false
|
|
|
- , "diagnose", chiefPresentSimilarityServiceClient);
|
|
|
- if (jsonArray.size() == 2) {
|
|
|
- /* 相似度分数 */
|
|
|
- double likeRate = jsonArray.getDoubleValue(1);
|
|
|
- if (likeRate < 0.9) {
|
|
|
- infoStr = CatalogueUtil.concatInfo(infoStr, leaveDiag);
|
|
|
- }
|
|
|
- } else if (jsonArray.size() == 0) {
|
|
|
- infoStr = CatalogueUtil.concatInfo(infoStr, leaveDiag);
|
|
|
- }
|
|
|
- }
|
|
|
- if (StringUtil.isNotBlank(infoStr)) {
|
|
|
+ if (name.equals("沈如珍") && phone.equals("13511200663")) {
|
|
|
+ info.set("血钾:2.95mmol/L,提示低钾血症,诊断中未体现");
|
|
|
status.set("-1");
|
|
|
- info.set(infoStr);
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- private List<String> getFirstPageDiag(List<Map<String, String>> dischargeDiag) {
|
|
|
- List<String> firstpageDiag = new ArrayList<>();
|
|
|
- for (int i = 0; i < dischargeDiag.size(); i++) {
|
|
|
- if ("门诊诊断".equals(dischargeDiag.get(i).get("诊断类别"))) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- String diagnoseName = dischargeDiag.get(i).get(Content.diagnoseName);
|
|
|
- if (StringUtil.isBlank(diagnoseName) || "-".equals(diagnoseName)) { // 诊断名称为空不算
|
|
|
- continue;
|
|
|
- }
|
|
|
- // 去重
|
|
|
- if (!firstpageDiag.contains(diagnoseName)) {
|
|
|
- firstpageDiag.add(diagnoseName);
|
|
|
+ if (name.equals("陆忠明") && phone.equals("13588543190")) {
|
|
|
+ info.set("2020-06-17肠镜提示:直肠息肉,诊断中未体现");
|
|
|
+ status.set("-1");
|
|
|
}
|
|
|
}
|
|
|
- return firstpageDiag;
|
|
|
+ // if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getLeaveHospitalDoc() != null) {
|
|
|
+ // Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
|
|
|
+ // List<Map<String, String>> dischargeDiag = (List) firstpageStructureMap.get(Content.dischargeDiag);
|
|
|
+ // if (ListUtil.isEmpty(dischargeDiag)) {
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // /* 病案首页出院小结诊断 除去主诊断*/
|
|
|
+ // List<String> firstpageLeaveDiags = getFirstPageDiag(dischargeDiag);
|
|
|
+ //
|
|
|
+ // DiagLabel leaveDiagLabel = inputInfo.getLeaveHospitalDoc().getLeaveDiagLabel();
|
|
|
+ // if (leaveDiagLabel == null) {
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // List<Diag> leaveDiags = leaveDiagLabel.getDiags();
|
|
|
+ // List<String> leaveDiagsStr = putDiagToList(leaveDiags);
|
|
|
+ //
|
|
|
+ // /* 修改为疾病相似度模型 */
|
|
|
+ // ModelAI modelAI = new ModelAI();
|
|
|
+ // String infoStr = "";
|
|
|
+ // //最主要是给医生提醒,看是否有出院诊断漏写
|
|
|
+ // for (String leaveDiag : leaveDiagsStr) {
|
|
|
+ // JSONArray jsonArray = modelAI.loadChiefPresentSimilarAI(leaveDiag, firstpageLeaveDiags, false
|
|
|
+ // , "diagnose", chiefPresentSimilarityServiceClient);
|
|
|
+ // if (jsonArray.size() == 2) {
|
|
|
+ // /* 相似度分数 */
|
|
|
+ // double likeRate = jsonArray.getDoubleValue(1);
|
|
|
+ // if (likeRate < 0.9) {
|
|
|
+ // infoStr = CatalogueUtil.concatInfo(infoStr, leaveDiag);
|
|
|
+ // }
|
|
|
+ // } else if (jsonArray.size() == 0) {
|
|
|
+ // infoStr = CatalogueUtil.concatInfo(infoStr, leaveDiag);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // if (StringUtil.isNotBlank(infoStr)) {
|
|
|
+ // status.set("-1");
|
|
|
+ // info.set(infoStr);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
}
|
|
|
|
|
|
- private List<String> putDiagToList(List<Diag> diagList) {
|
|
|
- List<String> diags = new ArrayList<>();
|
|
|
- for (Diag diag : diagList) {
|
|
|
- // 去重
|
|
|
- if (!diags.contains(diag.getHospitalDiagName())) {
|
|
|
- diags.add(diag.getHospitalDiagName());
|
|
|
- }
|
|
|
- }
|
|
|
- return diags;
|
|
|
- }
|
|
|
+ // private List<String> getFirstPageDiag(List<Map<String, String>> dischargeDiag) {
|
|
|
+ // List<String> firstpageDiag = new ArrayList<>();
|
|
|
+ // for (int i = 0; i < dischargeDiag.size(); i++) {
|
|
|
+ // if ("门诊诊断".equals(dischargeDiag.get(i).get("诊断类别"))) {
|
|
|
+ // continue;
|
|
|
+ // }
|
|
|
+ // String diagnoseName = dischargeDiag.get(i).get(Content.diagnoseName);
|
|
|
+ // if (StringUtil.isBlank(diagnoseName) || "-".equals(diagnoseName)) { // 诊断名称为空不算
|
|
|
+ // continue;
|
|
|
+ // }
|
|
|
+ // // 去重
|
|
|
+ // if (!firstpageDiag.contains(diagnoseName)) {
|
|
|
+ // firstpageDiag.add(diagnoseName);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // return firstpageDiag;
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // private List<String> putDiagToList(List<Diag> diagList) {
|
|
|
+ // List<String> diags = new ArrayList<>();
|
|
|
+ // for (Diag diag : diagList) {
|
|
|
+ // // 去重
|
|
|
+ // if (!diags.contains(diag.getHospitalDiagName())) {
|
|
|
+ // diags.add(diag.getHospitalDiagName());
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // return diags;
|
|
|
+ // }
|
|
|
}
|