Pārlūkot izejas kodu

湘雅三院cdss

shiyue 3 gadi atpakaļ
vecāks
revīzija
faac4e9699

+ 1 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -126,6 +126,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/klRule/startRuleInfo").permitAll()
                 .antMatchers("/klDisease/searchConcept").permitAll()
                 .antMatchers("/cache/clearRuleAll").permitAll()
+                .antMatchers("/dataPage/docking/getDataServiceXy").permitAll()
                 .antMatchers("/dataPage/docking/getDataService").permitAll()
                 .antMatchers("/dataPage/docking/getStaticKnowledge").permitAll()
                 .antMatchers("/dataPage/docking/getDataEngine").permitAll()

+ 1 - 0
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -169,6 +169,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/klDisease/searchConcept", request)
                 || matchers("/cache/clearRuleAll", request)
                 || matchers("/dataPage/docking/getDataService", request)
+                || matchers("/dataPage/docking/getDataServiceXy", request)
                 || matchers("/dataPage/docking/getStaticKnowledge", request)
                 || matchers("/dataPage/docking/getDataEngine", request)
                 || matchers("/dataPage/docking/addUserAndRole", request)

+ 83 - 38
src/main/java/com/diagbot/facade/DataPageDockFacade.java

@@ -1,7 +1,10 @@
 package com.diagbot.facade;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.diagbot.biz.push.entity.Item;
+import com.diagbot.biz.push.entity.Lis;
+import com.diagbot.biz.push.entity.Pacs;
 import com.diagbot.dto.IndicationDTO;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.PushPlanDTO;
@@ -16,7 +19,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLEncoder;
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 
 /*
@@ -49,13 +56,21 @@ public class DataPageDockFacade {
      * @time: ${DATE} ${TIME}
      **/
     public RespDTO<String> getStaticKnowledge(StaticKnowledgeHISVO staticKnowledgeHISVO) {
+//        String hisName=StringUtils.isNotEmpty(staticKnowledgeHISVO.getHisName())?JSON.toJSONString(staticKnowledgeHISVO.getHisName(), SerializerFeature.BrowserCompatible):"";
+//        String hisDetailName=StringUtils.isNotEmpty(staticKnowledgeHISVO.getHisName())?JSON.toJSONString(staticKnowledgeHISVO.getHisName(), SerializerFeature.BrowserCompatible):"";
+        if (StringUtil.isNotEmpty(staticKnowledgeHISVO.getHisDetailName()) && staticKnowledgeHISVO.getType()==4) {
+          staticKnowledgeHISVO.setHisName(staticKnowledgeHISVO.getHisDetailName());
+        }
         String url = dataPageUrl + "/informationOut.html?hospitalId=" + staticKnowledgeHISVO.getHospitalId()
                 + "&type=" + staticKnowledgeHISVO.getType()
-                + "&hisName=" + staticKnowledgeHISVO.getHisName();
-        if (StringUtil.isNotEmpty(staticKnowledgeHISVO.getHisDetailName())) {
-            url += "&hisDetailName=" + staticKnowledgeHISVO.getHisDetailName();
+                + "&hisName=" + URLEncoder.encode(staticKnowledgeHISVO.getHisName());
+        URL urlString = null;
+        try {
+            urlString=new URL( url);
+        } catch (MalformedURLException e) {
+            e.printStackTrace();
         }
-        return RespDTO.onSuc(url);
+        return RespDTO.onSuc(urlString);
     }
 
     /**
@@ -97,7 +112,6 @@ public class DataPageDockFacade {
                 return RespDTO.onError("无开单合理性提醒!");
             }
         }
-
         if ("hor".equals(dataPageDockVO.getShowType())) {
             url = dataPageUrl + "/cdssHorizontal.html?pushMrId=" + pushMrId + "&mrId=" + mrId + "&hospitalId=" + dataPageDockVO.getHospitalId() + "&planCode=" + dataPageDockVO.getPlanCode();
         } else {
@@ -190,44 +204,56 @@ public class DataPageDockFacade {
     }
 
 
-    //厦门根据视图来取所需数据
+    //湘雅根据视图来取所需数据
     public RespDTO<String> getDataServiceXY(StructuralDataVo structuralDataVo) {
+        if (structuralDataVo.getBehospitalCode().contains("_")){
+            structuralDataVo.setBehospitalCode(structuralDataVo.getBehospitalCode().substring(0,structuralDataVo.getBehospitalCode().indexOf("_")));
+        }
         DataPageDockVO dataPageDockVO = new DataPageDockVO();
+        RespDTO<String> respDTO =new RespDTO<>();
         try {
             String where = " where behospitalCode =  '" + structuralDataVo.getBehospitalCode() + "' and behospitalNum = '" + structuralDataVo.getFileCode() + "'";
-            String DrugSql = " select * from drug       " + where;
-            String DiagSql = " select * from diag       " + where;
-            String InfoSql = " select * from medical_record   " + where;
+            String DrugSql = " select * from drug       " + " where behospitalCode =  '" + structuralDataVo.getBehospitalCode() + "' and fileCode = '" + structuralDataVo.getFileCode() + "'";
+            String DiagSql = " select * from diag       "+" where behospitalCode =  '" + structuralDataVo.getBehospitalCode() + "' and fileCode = '" + structuralDataVo.getFileCode() + "'";
+            String InfoSql = " select * from medical_records  where  PATIENTID ='"+structuralDataVo.getBehospitalCode()+"' and VISITID = '"+structuralDataVo.getFileCode()+"'";
+            String InfoSqlaa = " select * from medical_record " +where;
             String lisSql = "  select * from assay_details       " + where;
             String PacsSql = " select * from check_details       " + where;
             String OpsSql = "  select * from homepage_operation         " + where;
 
-            //得到基本信息并赋予
+//            //得到基本信息并赋予
             Map<String, String> map = tzDBConn1.getInfo(InfoSql);
             dataPageDockVO.setPlanCode(structuralDataVo.getPlanCode());
             dataPageDockVO.setHospitalId(structuralDataVo.getHospitalId());//医院id
-            dataPageDockVO.setShowType(structuralDataVo.getShowType());//展示方式(待解决)
-            dataPageDockVO.setAge(map.get("age"));//年龄
-            dataPageDockVO.setSex(Integer.parseInt(StringUtils.isNoneBlank(map.get("sex")) ? map.get("sex") : "0"));//性别
-            dataPageDockVO.setMarriage(map.get("marriage"));//婚姻
-            dataPageDockVO.setChief(map.get("chief"));//主诉
-            dataPageDockVO.setSymptom(map.get("symptom"));//现病史
-            dataPageDockVO.setVital(map.get("vital"));//查体
-            dataPageDockVO.setPasts(map.get("pasts"));//既往
-            dataPageDockVO.setInfectious(map.get("infectious"));//传染病史
-            dataPageDockVO.setSurgical(map.get("surgical"));//手术外伤史
-            dataPageDockVO.setAllergy(map.get("allergy"));//过敏
-            dataPageDockVO.setVaccination(map.get("vaccination"));//接种
-            dataPageDockVO.setPersonal(map.get("personal"));//个人史
-            dataPageDockVO.setMarital(map.get("marital"));//婚育史
-            dataPageDockVO.setFamily(map.get("family"));//家族史
-            dataPageDockVO.setOther(map.get("menstrual"));//月经史
-
+            dataPageDockVO.setShowType(structuralDataVo.getShowType());//展示方式
+            if (StringUtils.isNotEmpty(map.get("SEX"))){
+                dataPageDockVO.setSex(Integer.valueOf(map.get("SEX").equals("男")?"1":map.get("SEX").equals("女")?"2":"3"));//性别
+            }
+            dataPageDockVO.setAge(StringUtils.isNotEmpty(map.get("AGE"))?map.get("AGE"):"18");//年龄
+            dataPageDockVO.setMarriage(map.get("MARRIAGE"));//婚姻
+            dataPageDockVO.setChief(map.get("CHIEF"));//主诉
+            dataPageDockVO.setSymptom(map.get("SYMPTOM"));//现病
+
+//            dataPageDockVO.setChief("体温39.2,高热,植入钢板");//主诉
+//            dataPageDockVO.setSymptom("体温39.2,高热,植入钢板");//现病
+            dataPageDockVO.setPasts(map.get("PASTS"));//既往
+            dataPageDockVO.setPersonal(map.get("PERSONAL"));//个人史
+            dataPageDockVO.setMarital(map.get("MARITAL"));//婚育史
+            dataPageDockVO.setFamily(map.get("FAMILY"));//家族史
+            dataPageDockVO.setMenstrual(map.get("MENSTRUAL"));//月经史
+            dataPageDockVO.setVital(map.get("VITAL"));//查体
             System.out.println(JSON.toJSONString(dataPageDockVO) + "-------------------------------------信息");
 
             //获取Order信息并赋予
+            List<Lis> lisOrder = structuralDataVo.getLisOrder();
+            if (lisOrder.size()>0){
+                lisOrder.forEach(lis -> {
+                    lis.setDetailName("");
+                    lis.setUniqueName("");
+                });
+            }
             dataPageDockVO.setPacsOrder(structuralDataVo.getPacsOrder());
-            dataPageDockVO.setLisOrder(structuralDataVo.getLisOrder());
+            dataPageDockVO.setLisOrder(lisOrder);
             dataPageDockVO.setOperationOrder(structuralDataVo.getOperationOrder());
             dataPageDockVO.setDrugOrder(structuralDataVo.getDrugOrder());
             dataPageDockVO.setDiseaseName(structuralDataVo.getDiseaseName());
@@ -236,19 +262,36 @@ public class DataPageDockFacade {
             System.out.println(JSON.toJSONString(dataPageDockVO) + "-------------------------------------Order");
 
             //获取历史信息并赋予
-            dataPageDockVO.setPacs(tzDBConn.getPacs(PacsSql));
-            dataPageDockVO.setLis(tzDBConn.getLis(lisSql));
-            dataPageDockVO.setDrug(tzDBConn.getDrug(DrugSql));
-            dataPageDockVO.setDiag(tzDBConn.getDiag(DiagSql));
-            dataPageDockVO.setOperation(tzDBConn.getOperation(OpsSql));
-
+            //根据方案编码来判断是否是多参考值 如果是根据repNo来获取他们的值
+            if (structuralDataVo.getPlanCode().equals("medical_lis")){
+                if (StringUtils.isNotEmpty(structuralDataVo.getRepNo())){
+                    lisSql= lisSql+" and repNo='"+structuralDataVo.getRepNo()+"'";
+                }
+                dataPageDockVO.setLis(tzDBConn.getLis(lisSql));
+                dataPageDockVO.setDiag(tzDBConn.getDiag(DiagSql));
+            }else if (structuralDataVo.getPlanCode().equals("medical_pacs")){
+                if (StringUtils.isNotEmpty(structuralDataVo.getRepNo())){
+                    PacsSql= PacsSql+" and repNo='"+structuralDataVo.getRepNo()+"'";
+                }
+                dataPageDockVO.setPacs(tzDBConn.getPacs(PacsSql));
+                dataPageDockVO.setDiag(tzDBConn.getDiag(DiagSql));
+            }else {
+                dataPageDockVO.setPacs(tzDBConn.getPacs(PacsSql));
+                dataPageDockVO.setLis(tzDBConn.getLis(lisSql));
+                dataPageDockVO.setDrug(tzDBConn.getDrug(DrugSql));
+                dataPageDockVO.setDiag(tzDBConn.getDiag(DiagSql));
+                dataPageDockVO.setOperation(tzDBConn.getOperation(OpsSql));
+            }
             System.out.println(JSON.toJSONString(dataPageDockVO) + "---------------------------------------历史数据");
+
+            respDTO= this.getDataService(dataPageDockVO);
             //保存入参到库里 方便以后查看
             TranDatadockingLog tranDatadockingLog = new TranDatadockingLog();
             tranDatadockingLog.setDoctorCode("正常入参");
             tranDatadockingLog.setHospitalId(dataPageDockVO.getHospitalId());
-            tranDatadockingLog.setParamIn(JSON.toJSONString(structuralDataVo));
-            tranDatadockingLog.setParamOut(JSON.toJSONString(dataPageDockVO));
+            tranDatadockingLog.setSexType(JSON.toJSONString(structuralDataVo));
+            tranDatadockingLog.setParamIn(JSON.toJSONString(dataPageDockVO));
+            tranDatadockingLog.setParamOut(JSON.toJSONString(respDTO));
             tranDatadockingLog.setRemark("方案编码," + dataPageDockVO.getPlanCode());
             tranDatadockingLog.setInquiryCode("病人住院号:  " + structuralDataVo.getBehospitalCode()+"_"+structuralDataVo.getFileCode());
             tranDatadockingLog.setTransTime(new Date());
@@ -256,15 +299,17 @@ public class DataPageDockFacade {
 
         } catch (Exception e) {
             TranDatadockingLog tranDatadockingLog = new TranDatadockingLog();
-            tranDatadockingLog.setRemark("获取数据失败," + structuralDataVo);
+            tranDatadockingLog.setSexType("获取数据失败," + JSON.toJSONString(structuralDataVo));
             tranDatadockingLog.setRemark("方案编码," + dataPageDockVO.getPlanCode());
+            tranDatadockingLog.setParamIn(JSON.toJSONString(dataPageDockVO));
+            tranDatadockingLog.setParamOut(JSON.toJSONString(respDTO));
             tranDatadockingLog.setInquiryCode("病人住院号:  " + structuralDataVo.getBehospitalCode()+"_"+structuralDataVo.getFileCode());
             tranDatadockingLog.setTransTime(new Date());
             dataDockingLogFacade.save(tranDatadockingLog);
         } finally {
             tzDBConn.close();
         }
-        return this.getDataService(dataPageDockVO);
+        return respDTO;
     }
 
 }

+ 17 - 8
src/main/java/com/diagbot/util/TZDBConn.java

@@ -124,9 +124,10 @@ public class TZDBConn {
             rs = dbconn.Query(sql, null);
             while (rs.next()) {
                 Drug drug = new Drug();
-                drug.setName(rs.getString("name"));//医院项目名称
+                drug.setName(StringUtils.isNotEmpty(rs.getString("name"))?rs.getString("name"):"");//医院项目名称
                 drug.setDateValue(rs.getString("dateValue"));//结果时间
                 drug.setForm(rs.getString("form"));//药品剂型
+				drug.setUniqueName("");
                 drugs.add(drug);
             }
         } catch (Exception e) {
@@ -147,10 +148,11 @@ public class TZDBConn {
         try {
             rs = dbconn.Query(sql, null);
             while (rs.next()) {
-                Drug drug = new Drug();
-                drug.setName(rs.getString("name"));//医院项目名称
-				drug.setDateValue(rs.getString("dateValue"));//结果时间
-                diags.add(drug);
+                Item diag = new Item();
+				diag.setName(StringUtils.isNotEmpty(rs.getString("name"))?rs.getString("name"):"");//医院项目名称
+				diag.setUniqueName("");
+				diag.setDateValue(rs.getString("dateValue"));//结果时间
+                diags.add(diag);
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -172,8 +174,12 @@ public class TZDBConn {
 			Pattern pattern = Pattern.compile("^[0-9]+(\\.[0-9]*)?$");
 			while (rs.next()) {
 				Lis lis = new Lis();
-				lis.setDetailName(rs.getString("detailName"));//检验细项名称
+				lis.setName(rs.getString("name"));//检验项目名称
+				lis.setDetailName(StringUtils.isNotEmpty(rs.getString("itemName"))?rs.getString("itemName"):"");//检验细项名称
 				lis.setOtherValue(rs.getString("result"));//检验结果值(文本)
+				if (StringUtils.isNoneBlank(rs.getString("result"))) {
+					lis.setValue(pattern.matcher(rs.getString("result")).matches() ? Double.parseDouble(rs.getString("result")) : 0);//最小值
+				}
 				lis.setUnits(rs.getString("unit"));//单位
 				if (StringUtils.isNoneBlank(rs.getString("referenceMin"))) {
 					lis.setMinValue(pattern.matcher(rs.getString("referenceMin")).matches() ? Double.parseDouble(rs.getString("referenceMin")) : null);//最小值
@@ -182,6 +188,7 @@ public class TZDBConn {
 					lis.setMaxValue(pattern.matcher(rs.getString("referenceMax")).matches() ? Double.parseDouble(rs.getString("referenceMax")) : null);//最大值
 				}
 				lis.setDateValue(rs.getString("dateValue"));//结果时间
+				lis.setUniqueName("");
 				list.add(lis);
 			}
 		} catch (Exception e) {
@@ -202,10 +209,11 @@ public class TZDBConn {
 			rs = dbconn.Query(sql, null);
 			while (rs.next()) {
 				Pacs pacs1 = new Pacs();
-				pacs1.setName(rs.getString("repName"));//医院检查名称
+				pacs1.setName(StringUtils.isNotEmpty(rs.getString("repName"))?rs.getString("repName"):"");//医院检查名称
 				pacs1.setDesc(rs.getString("clinicSight"));//检查描述
-				pacs1.setResult(rs.getString("reptDiag"));//检查结果
+				pacs1.setResult(rs.getString("reptDiag")+"+"+rs.getString("clinicSight"));//检查结果
 				pacs1.setDateValue(rs.getString("dateValue"));//结果时间
+				pacs1.setUniqueName("");
 				pacs.add(pacs1);
 			}
 		} catch (Exception e) {
@@ -229,6 +237,7 @@ public class TZDBConn {
                 Item item = new Item();
                 item.setName(rs.getString("operationName"));//手术名称
                 item.setDateValue(rs.getString("operationDate"));//开单时间
+				item.setUniqueName("");
                 items.add(item);
             }
         } catch (Exception e) {

+ 11 - 2
src/main/java/com/diagbot/util/TZDBConn1.java

@@ -363,9 +363,18 @@ public class TZDBConn1 {
 		try {
 			rs =dbconn.Query(sql, null);
 			while(rs.next()){
-				map.put(rs.getString("info"),rs.getString("value"));//名称
+				map.put("AGE",rs.getString("AGE"));//年龄
+				map.put("SEX",rs.getString("SEX"));//性别
+				map.put("MARRIAGE",rs.getString("MARRIAGE"));//婚姻
+				map.put("CHIEF",rs.getString("CHIEF"));//主诉
+				map.put("SYMPTOM",rs.getString("SYMPTOM"));//现病史
+				map.put("PASTS",rs.getString("PASTS"));//既往史
+				map.put("PERSONAL",rs.getString("PERSONAL"));//个人史
+				map.put("MARITAL",rs.getString("MARITAL"));//婚育史
+				map.put("FAMILY",rs.getString("FAMILY"));//家族史
+				map.put("MENSTRUAL",rs.getString("MENSTRUAL"));//月经史
+				map.put("VITAL",rs.getString("VITAL"));//查体
 			}
-			System.out.println(map);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}

+ 7 - 0
src/main/java/com/diagbot/web/DataPageDockController.java

@@ -38,6 +38,13 @@ public class DataPageDockController {
     public RespDTO<String> getDataService(@Valid @RequestBody StructuralDataVo structuralDataVo) {
         return dataPageDockFacade.getDataServiceXY(structuralDataVo);
     }
+    @ApiOperation(value = "页面推送模式-对接API[湘雅三院]",
+            notes = "")
+    @PostMapping("/getDataServiceXy")
+    @SysLogger("getDataServiceXy")
+    public RespDTO<String> getDataServiceXy(@Valid @RequestBody StructuralDataVo structuralDataVo) {
+        return dataPageDockFacade.getDataServiceXY(structuralDataVo);
+    }
 
 
 //    @ApiOperation(value = "页面推送模式-推理API[QQ]",

+ 6 - 4
src/main/java/com/diagbot/xm/vo/StructuralDataVo.java

@@ -14,7 +14,7 @@ import java.util.List;
 @Data
 public class StructuralDataVo {
 
-    private Item diseaseName;
+
     @NotNull(message = "请输入展示类型,横版:ver,或竖版hor")
     private String showType;//横版:ver,或竖版hor
 
@@ -29,14 +29,16 @@ public class StructuralDataVo {
      * 医院id
      */
     private Long hospitalId;
+
+    private Integer sex;
     /**
-     * 病人住院号
+     * 病人住院次数
      */
     private String fileCode;
     /**
      * 病例ID
      */
-    private  String recId;
+    private  String repNo;
 
     /**
      * 当前化验开单项
@@ -69,5 +71,5 @@ public class StructuralDataVo {
     /**
      * 选中诊断
      */
-
+    private Item diseaseName;
 }

+ 5 - 0
src/main/resources/jdbc.properties

@@ -8,6 +8,11 @@ jdbc.url=jdbc:oracle:thin:@132.147.254.159:1521/dbserver
 jdbc.username=langtong
 jdbc.password=langtong
 
+#jdbc.driverClassName=oracle.jdbc.OracleDriver
+#jdbc.url=jdbc:oracle:thin:@132.147.254.166:1521/his166
+#jdbc.username=langtong
+#jdbc.password=langtong
+
 jdbc.driverClassName1=oracle.jdbc.OracleDriver
 jdbc.url1=jdbc:oracle:thin:@132.147.254.108:1521/medxdb
 jdbc.username1=langtong