浏览代码

治疗方案优化

Zhaops 6 年之前
父节点
当前提交
b9895c7122

+ 60 - 69
aipt-service/src/main/java/com/diagbot/facade/TreatmentFacade.java

@@ -20,6 +20,7 @@ import com.diagbot.util.FastJsonUtils;
 import com.diagbot.util.ListUtil;
 import com.diagbot.vo.ConceptBaseVO;
 import com.diagbot.vo.ConceptIntroduceVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -85,77 +86,73 @@ public class TreatmentFacade {
             retMap.put("surgeryTreatment", null);
         }
 
-
         //获取知识图谱治疗方案
         JSONObject treatmentJson = treatmentMap.get(diseaseName);
         if (treatmentJson == null || treatmentJson.isEmpty()) {
             return retMap;
         }
 
-        List<MedicitionClass> drugsList
-                = FastJsonUtils.getJsonToListByKey(treatmentJson.toString(),
-                "treatment", MedicitionClass.class);
-        List<String> cateBigNameList
-                = drugsList.stream().map(drugs -> drugs.getBigdrugsName()).collect(Collectors.toList());
-        List<Concept> cateBigConceptList
-                = conceptFacade.getListByNamesAndType(cateBigNameList,
-                LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey());
-        Map<String, Concept> cateBigConceptMap
-                = EntityUtil.makeEntityMap(cateBigConceptList, "libName");
-        List<String> cateSmallNameList
-                = drugsList.stream().map(drugs -> drugs.getSubdrugsName()).collect(Collectors.toList());
-        List<Concept> cateSmallConceptList
-                = conceptFacade.getListByNamesAndType(cateSmallNameList,
-                LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey());
-        Map<String, Concept> cateSmallConceptMap
-                = EntityUtil.makeEntityMap(cateSmallConceptList, "libName");
+        //推荐药物
+        List<MedicitionClass> drugsList = FastJsonUtils.getJsonToListByKey(treatmentJson.toString(), "treatment", MedicitionClass.class);
+        if (ListUtil.isNotEmpty(drugsList)) {
+            //药品大类
+            List<String> cateBigNameList = drugsList.stream().map(drugs -> drugs.getBigdrugsName()).collect(Collectors.toList());
+            List<Concept> cateBigConceptList = conceptFacade.getListByNamesAndType(cateBigNameList, LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey());
+            Map<String, Concept> cateBigConceptMap = EntityUtil.makeEntityMap(cateBigConceptList, "libName");
+            Map<String, Concept> cateBigInfoExistMap = conceptDetailFacade.existList(cateBigNameList, LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey());
+            //药品小类
+            List<String> cateSmallNameList = drugsList.stream().map(drugs -> drugs.getSubdrugsName()).collect(Collectors.toList());
+            List<Concept> cateSmallConceptList = conceptFacade.getListByNamesAndType(cateSmallNameList, LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey());
+            Map<String, Concept> cateSmallConceptMap = EntityUtil.makeEntityMap(cateSmallConceptList, "libName");
+            //Map<String, Concept> cateSmallInfoExistMap = conceptDetailFacade.existList(cateSmallNameList, LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey());
 
-        for (MedicitionClass medicitionClass : drugsList) {
-            Concept cateBigConcept = cateBigConceptMap.get(medicitionClass.getBigdrugsName());
-            if (cateBigConcept != null) {
-                medicitionClass.setBigdrugsConceptId(cateBigConcept.getId());
-            }
-            medicitionClass.setBigdrgusLibType(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey());
-            medicitionClass.setBigdrugsType(ConceptTypeEnum.Drug_Category_Big.getKey());
-            Concept cateSmallConcept = cateSmallConceptMap.get(medicitionClass.getSubdrugsName());
-            if (cateSmallConcept != null) {
-                medicitionClass.setSubdrugsConceptId(cateSmallConcept.getId());
-            }
-            medicitionClass.setSubdrugsLibType(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey());
-            medicitionClass.setSubdrugsType(ConceptTypeEnum.Drug_Category_Small.getKey());
-            if (cateBigConcept != null) {
-                conceptIntroduceVO = new ConceptIntroduceVO();
-                conceptIntroduceVO.setName(cateBigConcept.getLibName());
-                conceptIntroduceVO.setType(ConceptTypeEnum.Drug_Category_Big.getKey());
-                conceptIntroduceVO.setLibType(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey());
-                if (conceptDetailFacade.exist(conceptIntroduceVO)) {
-                    medicitionClass.setShowInfo("1");
-                } else {
-                    medicitionClass.setShowInfo("0");
+            //药品说明信息
+            List<Medicition> medicitionTotalList = Lists.newLinkedList();
+            for (MedicitionClass medicitionClass : drugsList) {
+                if (medicitionClass.getMedicitionsList() != null) {
+                    medicitionTotalList.addAll(medicitionClass.getMedicitionsList());
                 }
             }
-            LinkedList<Medicition> medicitionList = medicitionClass.getMedicitionsList();
-            List<String> drugNameList
-                    = medicitionList.stream().map(m -> m.getMedicitionName()).collect(Collectors.toList());
-            List<Concept> drugList
-                    = conceptFacade.getListByNamesAndType(drugNameList, LexiconTypeEnum.DRUGS.getKey());
+            List<String> drugNameList = medicitionTotalList.stream().map(m -> m.getMedicitionName()).collect(Collectors.toList());
+            List<Concept> drugList = conceptFacade.getListByNamesAndType(drugNameList, LexiconTypeEnum.DRUGS.getKey());
             Map<String, Concept> drugMap = EntityUtil.makeEntityMap(drugList, "libName");
-            Map<String, Concept> drugDetailMap
-                    = conceptDetailFacade.existList(drugNameList, LexiconTypeEnum.DRUGS.getKey());
-            for (Medicition medicition : medicitionList) {
-                Concept drugConcept = drugMap.get(medicition.getMedicitionName());
-                if (drugConcept != null) {
-                    medicition.setConceptId(drugConcept.getId());
+            Map<String, Concept> drugDetailMap = conceptDetailFacade.existList(drugNameList, LexiconTypeEnum.DRUGS.getKey());
+
+            for (MedicitionClass medicitionClass : drugsList) {
+                Concept cateBigConcept = cateBigConceptMap.get(medicitionClass.getBigdrugsName());
+                if (cateBigConcept != null) {
+                    medicitionClass.setBigdrugsConceptId(cateBigConcept.getId());
+                    if (cateBigInfoExistMap.containsKey(cateBigConcept.getLibName())) {
+                        medicitionClass.setShowInfo("1");
+                    } else {
+                        medicitionClass.setShowInfo("0");
+                    }
                 }
-                medicition.setLibType(LexiconTypeEnum.DRUGS.getKey());
-                medicition.setType(ConceptTypeEnum.Drug.getKey());
-                if (drugDetailMap != null && drugDetailMap.containsKey(medicition.getMedicitionName())) {
-                    medicition.setShowInfo("1");
-                } else {
-                    medicition.setShowInfo("0");
+                medicitionClass.setBigdrgusLibType(LexiconTypeEnum.DRUG_CATEGORY_BIG.getKey());
+                medicitionClass.setBigdrugsType(ConceptTypeEnum.Drug_Category_Big.getKey());
+                Concept cateSmallConcept = cateSmallConceptMap.get(medicitionClass.getSubdrugsName());
+                if (cateSmallConcept != null) {
+                    medicitionClass.setSubdrugsConceptId(cateSmallConcept.getId());
+                }
+                medicitionClass.setSubdrugsLibType(LexiconTypeEnum.DRUG_CATEGORY_SMALL.getKey());
+                medicitionClass.setSubdrugsType(ConceptTypeEnum.Drug_Category_Small.getKey());
+
+                LinkedList<Medicition> medicitionList = medicitionClass.getMedicitionsList();
+                for (Medicition medicition : medicitionList) {
+                    Concept drugConcept = drugMap.get(medicition.getMedicitionName());
+                    if (drugConcept != null) {
+                        medicition.setConceptId(drugConcept.getId());
+                    }
+                    medicition.setLibType(LexiconTypeEnum.DRUGS.getKey());
+                    medicition.setType(ConceptTypeEnum.Drug.getKey());
+                    if (drugDetailMap != null && drugDetailMap.containsKey(medicition.getMedicitionName())) {
+                        medicition.setShowInfo("1");
+                    } else {
+                        medicition.setShowInfo("0");
+                    }
                 }
+                medicitionClass.setMedicitionsList(medicitionList);
             }
-            medicitionClass.setMedicitionsList(medicitionList);
         }
         retMap.put("treatment", drugsList);
 
@@ -181,17 +178,11 @@ public class TreatmentFacade {
                 //上次用药-icss层处理
                 retMap.put("drugHistory", null);
                 //不良反应
-                List<AdverseReaction> adverseReactionList
-                        = FastJsonUtils.getJsonToListByKey(treatmentJson.toString(),
-                        "adverseEvent", AdverseReaction.class);
-                List<String> adNameList
-                        = adverseReactionList.stream().map(a -> a.getName()).collect(Collectors.toList());
-                List<Concept> adConceptList
-                        = conceptFacade.getListByNamesAndType(adNameList, LexiconTypeEnum.SIDE_EFFECTS.getKey());
-                Map<String, Concept> adConceptMap
-                        = EntityUtil.makeEntityMap(adConceptList, "libName");
-                Map<String, Concept> adConceptDetailMap
-                        = conceptDetailFacade.existList(adNameList, LexiconTypeEnum.SIDE_EFFECTS.getKey());
+                List<AdverseReaction> adverseReactionList = FastJsonUtils.getJsonToListByKey(treatmentJson.toString(), "adverseEvent", AdverseReaction.class);
+                List<String> adNameList = adverseReactionList.stream().map(a -> a.getName()).collect(Collectors.toList());
+                List<Concept> adConceptList = conceptFacade.getListByNamesAndType(adNameList, LexiconTypeEnum.SIDE_EFFECTS.getKey());
+                Map<String, Concept> adConceptMap = EntityUtil.makeEntityMap(adConceptList, "libName");
+                Map<String, Concept> adConceptDetailMap = conceptDetailFacade.existList(adNameList, LexiconTypeEnum.SIDE_EFFECTS.getKey());
                 for (AdverseReaction adverseReaction : adverseReactionList) {
                     Concept adConcept = adConceptMap.get(adverseReaction.getName());
                     if (adConcept != null) {

+ 38 - 10
icss-service/src/main/java/com/diagbot/facade/TreatmentFacade.java

@@ -74,6 +74,15 @@ public class TreatmentFacade {
                 eq("patient_id", patientId).
                 orderByDesc("gmt_modified");
         List<InquiryInfo> inquiryInfoList = inquiryInfoFacade.list(inquiryInfoQueryWrapper);
+
+        //是否慢病病历
+        List<String> firstDiseaseNameList = Lists.newLinkedList();
+        for (InquiryInfo inquiryInfo : inquiryInfoList) {
+            String[] diseases = inquiryInfo.getDiagnose().split(",|,");
+            if (diseases.length > 0) {
+                firstDiseaseNameList.add(diseases[0]);
+            }
+        }
         Boolean chronicHistroy = false;
         Boolean not_chronicHistory = false;
         for (InquiryInfo inquiryInfo : inquiryInfoList) {
@@ -83,9 +92,30 @@ public class TreatmentFacade {
             }
             String[] diseases = inquiryInfo.getDiagnose().split(",|,");
             if (diseases.length > 0) {
+                //判断是否慢病病历
+                DisTypeVO disTypeVO = new DisTypeVO();
+                disTypeVO.setName(diseases[0]);
+                disTypeVO.setDisType(DisTypeEnum.CHRONIC.getKey());
+                RespDTO<Boolean> resDisType = aiptServiceClient.verifyDisType(disTypeVO);
+                Boolean isChronic = false;
+                if (RespDTOUtil.respIsOK(resDisType) && resDisType.data == true) {
+                    isChronic = true;
+                }
+                //当前病历是慢病病历且上次慢病用药已取到数据
+                if (isChronic && chronicHistroy) {
+                    continue;
+                }
+                //当前病历是普通病病历且上次普通病用药已取到数据
+                if (!isChronic && not_chronicHistory) {
+                    continue;
+                }
                 QueryWrapper<InquiryDrug> inquiryDrugQueryWrapper = new QueryWrapper<>();
                 inquiryDrugQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).eq("inquiry_id", inquiryInfo.getId());
                 List<InquiryDrug> inquiryDrugList = inquiryDrugFacade.list(inquiryDrugQueryWrapper);
+                //当前病历没有开药
+                if (ListUtil.isEmpty(inquiryDrugList)) {
+                    continue;
+                }
                 List<Medicition> medicitionList = Lists.newLinkedList();
                 List<Long> conceptIds = inquiryDrugList.stream().map(inquiryDrug -> inquiryDrug.getConceptId()).collect(Collectors.toList());
                 ExistListByConceptIdsVO existListByConceptIds = new ExistListByConceptIdsVO();
@@ -112,19 +142,17 @@ public class TreatmentFacade {
                     medicitionList.add(medicition);
                 }
 
-                DisTypeVO disTypeVO = new DisTypeVO();
-                disTypeVO.setName(diseases[0]);
-                disTypeVO.setDisType(DisTypeEnum.CHRONIC.getKey());
-                RespDTO<Boolean> resDisType = aiptServiceClient.verifyDisType(disTypeVO);
-                if (RespDTOUtil.respIsOK(resDisType) && resDisType.data == true) {
+                if (isChronic) {
+                    //慢病上次用药
                     if (!chronicHistroy) {
                         drugHistoryMap.put("慢病用药内容", medicitionList);
                         chronicHistroy = true;
-                    } else {
-                        if (!not_chronicHistory) {
-                            drugHistoryMap.put("普通病用药内容", medicitionList);
-                            not_chronicHistory = true;
-                        }
+                    }
+                } else {
+                    //普通病上次用药
+                    if (!not_chronicHistory) {
+                        drugHistoryMap.put("普通病用药内容", medicitionList);
+                        not_chronicHistory = true;
                     }
                 }
             }