浏览代码

指标数据接口

wangfeng 6 年之前
父节点
当前提交
dd4dea5e3e

+ 26 - 7
aipt-service/src/main/java/com/diagbot/client/TranServiceClient.java

@@ -1,21 +1,24 @@
 package com.diagbot.client;
 
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
 import com.diagbot.client.bean.HosCodeVO;
 import com.diagbot.client.hystrix.TranServiceHystrix;
 import com.diagbot.dto.GetDiseaseIcdDTO;
 import com.diagbot.dto.GetTopPatientInfoDTO;
 import com.diagbot.dto.HospitalDeptInfoDTO;
 import com.diagbot.dto.HospitalDeptInfoVO;
+import com.diagbot.dto.IndexDataDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.vo.GetDiseaseIcdVO;
 import com.diagbot.vo.GetTopPatientInfoVO;
-
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-
-import java.util.List;
-import java.util.Map;
+import com.diagbot.vo.IndexDataSaveVO;
+import com.diagbot.vo.IndexDataiIds;
 
 /**
  * @Description: 调用信息对接层服务
@@ -121,4 +124,20 @@ public interface TranServiceClient {
      */
     @PostMapping("/pacsConfig/getPacsConfigByUniqueNameAndHosCode")
     RespDTO<Map<String, List<String>>> getPacsConfigByUniqueNameAndHosCode(@RequestBody HosCodeVO hosCodeVO);
+
+	/**
+	 * 指标数据获取
+	 * @param indexDataFindVO
+	 * @return
+	 */
+	@PostMapping(value = "/indexData/getIndexDatas")
+	RespDTO<List<IndexDataDTO>> getIndexDatas(@RequestBody IndexDataiIds indexDataFindVO);
+
+	/**
+	 * 指标数据保存
+	 * @param indexDataSaveVO
+	 * @return
+	 */
+	@PostMapping(value = "/indexData/saveIndexDatas")
+	RespDTO<Boolean> saveIndexDatas(@RequestBody IndexDataSaveVO indexDataSaveVO);
 }

+ 24 - 5
aipt-service/src/main/java/com/diagbot/client/hystrix/TranServiceHystrix.java

@@ -1,21 +1,27 @@
 package com.diagbot.client.hystrix;
 
+import java.util.List;
+import java.util.Map;
+
+import javax.validation.Valid;
+
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestBody;
+
 import com.diagbot.client.TranServiceClient;
 import com.diagbot.client.bean.HosCodeVO;
 import com.diagbot.dto.GetDiseaseIcdDTO;
 import com.diagbot.dto.GetTopPatientInfoDTO;
 import com.diagbot.dto.HospitalDeptInfoDTO;
 import com.diagbot.dto.HospitalDeptInfoVO;
+import com.diagbot.dto.IndexDataDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.vo.GetDiseaseIcdVO;
 import com.diagbot.vo.GetTopPatientInfoVO;
+import com.diagbot.vo.IndexDataSaveVO;
+import com.diagbot.vo.IndexDataiIds;
 
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.RequestBody;
-
-import java.util.List;
-import java.util.Map;
 
 /**
  * @Description: 调用信息对接层服务
@@ -137,4 +143,17 @@ public class TranServiceHystrix implements TranServiceClient {
         log.error("【hystrix】调用{}异常", "getPacsConfigByUniqueNameAndHosCode");
         return null;
     }
+
+	@Override
+	public RespDTO<List<IndexDataDTO>> getIndexDatas(@Valid IndexDataiIds indexDataFindVO) {
+		log.error("【hystrix】调用{}异常", "getIndexDatas");
+		return null;
+	}
+
+	@Override
+	public RespDTO<Boolean> saveIndexDatas(@Valid IndexDataSaveVO indexDataSaveVO) {
+		log.error("【hystrix】调用{}异常", "saveIndexDatas");
+		return null;
+	}
+
 }

+ 138 - 0
aipt-service/src/main/java/com/diagbot/facade/IndexDataFacade.java

@@ -0,0 +1,138 @@
+package com.diagbot.facade;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.diagbot.client.TranServiceClient;
+import com.diagbot.dto.IndexConfigAndDataDTO;
+import com.diagbot.dto.IndexConfigDTO;
+import com.diagbot.dto.IndexDTO;
+import com.diagbot.dto.IndexDataDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.IndexDataAllVO;
+import com.diagbot.vo.IndexDataFindVO;
+import com.diagbot.vo.IndexDataSaveVO;
+import com.diagbot.vo.IndexDataVO;
+import com.diagbot.vo.IndexDataiIds;
+
+/**
+ * 
+ * @author wangfeng
+ * @Description: TODO
+ * @date 2019年5月6日 下午8:04:09
+ */
+@Component
+public class IndexDataFacade {
+
+	@Autowired
+	TranServiceClient tranServiceClient;
+	@Autowired
+	IndexConfigFacade indexConfigFacade;
+
+	/**
+	 * 
+	 * @param indexDataFindVO
+	 * @return
+	 */
+	public IndexConfigAndDataDTO getIndexDataAll(IndexDataFindVO indexDataFindVO) {
+
+		Map<String, Object> indexDataMap = new HashMap<>();
+		indexDataMap.put("diseaseName", indexDataFindVO.getDiseaseName());
+		indexDataMap.put("patientId", indexDataFindVO.getPatientId());
+		indexDataMap.put("startTime", indexDataFindVO.getStartTime());
+		indexDataMap.put("endTime", indexDataFindVO.getEndTime());
+		List<Long> ids = new ArrayList<Long>();
+		// 获取所有需要记录的指标项
+		List<IndexConfigDTO> indexConfigdata = indexConfigFacade.getIndexConfig(indexDataFindVO.getDiseaseName());
+		for (IndexConfigDTO indexconfig : indexConfigdata) {
+			ids.add(indexconfig.getUniqueId());
+		}
+		IndexDataiIds indexDataiIds= new IndexDataiIds();
+		BeanUtil.copyProperties(indexDataFindVO,indexDataiIds);
+		indexDataiIds.setIds(ids);
+		// 获取慢病指标数据
+		RespDTO<List<IndexDataDTO>> dataAll = tranServiceClient.getIndexDatas(indexDataiIds);
+		 if (dataAll == null || !"0".equals(dataAll.code)) {
+	            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
+	                    "获取指标数据失败");
+	        }
+		List<IndexDataDTO> data = dataAll.data;
+		List<IndexDTO> list = new ArrayList<IndexDTO>();
+		// 根据公表名分组
+    	//Map<String, List<IndexDataDTO>> dataMap =datas.stream().collect(Collectors.groupingBy(IndexDataDTO::getIndexUnique));
+		 // 根据公表名分组
+        Map<String, List<IndexDataDTO>> dataMap = data.stream().collect(Collectors.groupingBy(IndexDataDTO::getIndexUnique));
+		for (String key : dataMap.keySet()) {
+			IndexDTO itemIndexDTO = new IndexDTO();
+			itemIndexDTO.setItemName(key);
+			List<String> indexUnits = new ArrayList<String>();
+			List<String> indexValues = new ArrayList<String>();
+			List<Integer> isAbnormals = new ArrayList<Integer>();
+			List<Date> creatTimes = new ArrayList<Date>();
+			List<IndexDataDTO> indexDatas = dataMap.get(key);
+			for (IndexDataDTO indexDataDTO : indexDatas) {
+				indexUnits.add(indexDataDTO.getIndexUnit());
+				indexValues.add(indexDataDTO.getIndexValue());
+				isAbnormals.add(indexDataDTO.getIsAbnormal());
+				creatTimes.add(indexDataDTO.getCreatTime());
+			}
+
+			itemIndexDTO.setIndexUnit(indexUnits);
+			itemIndexDTO.setIndexValue(indexValues);
+			itemIndexDTO.setIsAbnormal(isAbnormals);
+			itemIndexDTO.setCreatTime(creatTimes);
+			list.add(itemIndexDTO);
+
+		}
+		IndexConfigAndDataDTO indexsData = new IndexConfigAndDataDTO();
+		indexsData.setIndexConfigData(indexConfigFacade.getIndexConfig(indexDataFindVO.getDiseaseName()));
+		indexsData.setIndexData(list);
+		return indexsData;
+
+	}
+
+	public boolean saveIndexDatas(IndexDataSaveVO indexDataSaveVO) {
+		boolean res = false;
+		if (null != indexDataSaveVO && ListUtil.isNotEmpty(indexDataSaveVO.getIndexData())) {
+			// 获取所有需要记录的指标项
+			List<IndexConfigDTO> data = indexConfigFacade.getIndexConfig("");
+			// 遍历数据进行保存
+			List<IndexDataVO> indexDataList = new ArrayList<IndexDataVO>();
+			//过滤化验数据
+			List<IndexDataVO> indexDatas = indexDataSaveVO.getIndexData();
+			for (IndexConfigDTO configData : data) {
+				for (IndexDataVO indexDataNew : indexDatas) {
+					if (configData.getIndexUnique().equals(indexDataNew.getIndexUnique())) {
+						IndexDataAllVO indexData = new IndexDataAllVO();
+						indexData.setIndexId(configData.getUniqueId());
+						indexData.setIndexUnique(configData.getIndexUnique());
+						indexData.setCreatTime(indexDataNew.getCreatTime());
+						indexData.setIndexUnit(indexDataNew.getIndexUnit());
+						indexData.setIndexValue(indexDataNew.getIndexValue());
+						indexData.setIsAbnormal(indexDataNew.getIsAbnormal());
+						indexDataList.add(indexData);
+					}
+				}
+			}
+			indexDataSaveVO.setIndexData(indexDataList);
+	        RespDTO<Boolean> resData = tranServiceClient.saveIndexDatas(indexDataSaveVO);
+	        RespDTOUtil.respNGDeal(resData, resData.msg);
+	        res = resData.data;
+		}
+		
+		return res;
+	}
+
+}

+ 17 - 0
aipt-service/src/main/java/com/diagbot/vo/IndexDataAllVO.java

@@ -0,0 +1,17 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 
+ * @author wangfeng
+ * @Description: TODO
+ * @date 2019年5月9日 上午9:50:05
+ */
+@Setter
+@Getter
+public class IndexDataAllVO extends IndexDataVO{
+
+	private Long indexId;
+}

+ 59 - 0
aipt-service/src/main/java/com/diagbot/web/IndexDataController.java

@@ -0,0 +1,59 @@
+package com.diagbot.web;
+
+import javax.validation.Valid;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.IndexConfigAndDataDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.IndexDataFacade;
+import com.diagbot.vo.IndexDataFindVO;
+import com.diagbot.vo.IndexDataSaveVO;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * <p>
+ * 指标数据表 前端控制器
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2019-05-06
+ */
+@RestController
+@RequestMapping("/indexData")
+@Api(value = "指标数据API[by:wangfeng]", tags = { "知识库标准化-指标数据API" })
+@SuppressWarnings("unchecked")
+public class IndexDataController {
+
+	@Autowired
+	IndexDataFacade indexDataFacade;
+
+	@ApiOperation(value = "知识库标准化-根据疾病获取指标数据[by:wangfeng]", notes = "diseaseName:疾病名  必填<br> patientId:患者id ,必填<br> startTime:开始时间 ,必填<br> endTime:结束时间 ,必填<br> ")
+	@PostMapping("/getIndexDatas")
+	@SysLogger("getIndexDatas")
+	public RespDTO<IndexConfigAndDataDTO> getIndexDatas(@Valid @RequestBody IndexDataFindVO indexDataFindVO) {
+
+		IndexConfigAndDataDTO data = indexDataFacade.getIndexDataAll(indexDataFindVO);
+
+		return RespDTO.onSuc(data);
+	}
+
+	@ApiOperation(value = "知识库标准化-保存指标数据[by:wangfeng]", notes = "patientId : 患者id 必填<br> inquiryCode :就诊号  必填<br> IndexData:{指标公表名 :indexUnique;指标值indexValue;指标单位 indexUnit;是否异常 isAbnormal;化验时间creatTime;}")
+	@PostMapping("/saveIndexDatas")
+	@SysLogger("saveIndexDatas")
+	@Transactional
+	public RespDTO<Boolean> saveIndexDatas(@Valid @RequestBody IndexDataSaveVO indexDataSaveVO) {
+
+		boolean res = indexDataFacade.saveIndexDatas(indexDataSaveVO);
+
+		return RespDTO.onSuc(res);
+	}
+}