Selaa lähdekoodia

急诊病历导出修改

rgb 6 vuotta sitten
vanhempi
commit
81d639f53c

+ 8 - 0
icss-service/src/main/java/com/diagbot/client/TranServiceClient.java

@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 
 import com.diagbot.client.hystrix.TranServiceHystrix;
 import com.diagbot.dto.DoctorInfoDTO;
+import com.diagbot.dto.GetExportInquirysDTO;
 import com.diagbot.dto.HisInquirysForJzDTO;
 import com.diagbot.dto.HospitalInfoDTO;
 import com.diagbot.dto.LisConfigDTO;
@@ -143,6 +144,13 @@ public interface TranServiceClient {
     @PostMapping("/inquiryInfo/addDiagnoseSecond")
     RespDTO<Boolean> addDiagnoseSecond(@RequestBody AddDiagnoseSecondVO addDiagnoseSecondVO);
 
+    /**
+     * 急诊-获取需要导出的问诊数据
+     * @param inquiryIds
+     * @return
+     */
+    @PostMapping("/inquiryInfo/getExportInquirys")
+    RespDTO<List<GetExportInquirysDTO>> getExportInquirys(@RequestBody List<Long> inquiryIds);
 
     /**
      * 根据医院编码获取化验公表映射关系-itemName不为空

+ 8 - 7
icss-service/src/main/java/com/diagbot/client/hystrix/TranServiceHystrix.java

@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 
 import com.diagbot.client.TranServiceClient;
 import com.diagbot.dto.DoctorInfoDTO;
+import com.diagbot.dto.GetExportInquirysDTO;
 import com.diagbot.dto.HisInquirysForJzDTO;
 import com.diagbot.dto.HospitalInfoDTO;
 import com.diagbot.dto.LisConfigDTO;
@@ -112,13 +113,13 @@ public class TranServiceHystrix implements TranServiceClient {
     	log.error("【hystrix】调用{}异常", "addDiagnoseSecond");
 		return null;
 	}
-    
-    //    @Override
-    //    public Response<ResponseData> bayesPageData(SearchData searchData) {
-    //        log.error("【hystrix】调用{}异常", "bayesPageData");
-    //        return null;
-    //    }
-
+	
+	@Override
+	public RespDTO<List<GetExportInquirysDTO>> getExportInquirys(List<Long> inquiryIds) {
+		log.error("【hystrix】调用{}异常", "getExportInquirys");
+		return null;
+	}
+	
 	/**
      * 根据医院编码获取化验公表映射关系-itemName不为空
      *

+ 37 - 0
icss-service/src/main/java/com/diagbot/dto/GetExportInquirysDTO.java

@@ -0,0 +1,37 @@
+package com.diagbot.dto;
+
+import java.util.Map;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2019/3/19 13:56
+ */
+@Getter
+@Setter
+public class GetExportInquirysDTO {
+	
+	/**
+	 * 序号
+	 */
+	private Integer lineNum;
+	
+    /**
+     * 病人性别
+     */
+    private String patientSex;
+	
+    /**
+     * 病人年龄
+     */
+    private Integer patientAge;
+    
+    /**
+     * 主诉到二次诊断
+     */
+    private Map<Integer,String> detailMap;
+
+}

+ 60 - 0
icss-service/src/main/java/com/diagbot/facade/InquiryInfoFacade.java

@@ -1,5 +1,7 @@
 package com.diagbot.facade;
 
+import java.io.IOException;
+import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -8,6 +10,12 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
@@ -16,6 +24,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.client.TranServiceClient;
 import com.diagbot.dto.GetEvaluationScalesDTO;
 import com.diagbot.dto.GetEvaluationsDTO;
+import com.diagbot.dto.GetExportInquirysDTO;
 import com.diagbot.dto.GetInquiryDetailDTO;
 import com.diagbot.dto.GetLastOtherDTO;
 import com.diagbot.dto.HisInquiryDTO;
@@ -37,6 +46,8 @@ import com.diagbot.entity.InquiryScale;
 import com.diagbot.entity.PatientInfo;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.SexTypeEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
 import com.diagbot.service.InquiryDrugService;
 import com.diagbot.service.InquiryScaleService;
 import com.diagbot.service.impl.InquiryInfoServiceImpl;
@@ -46,6 +57,7 @@ import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.AddDiagnoseSecondVO;
+import com.diagbot.vo.ExportInquirysVO;
 import com.diagbot.vo.GetEvaluationScalesVO;
 import com.diagbot.vo.GetEvaluationsVO;
 import com.diagbot.vo.GetInquiryDetailVO;
@@ -480,5 +492,53 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
     	RespDTOUtil.respNGDeal(res, "添加二次诊断失败");
     	return res.data;
     }
+    
+    public void exportInquirys(HttpServletResponse response,ExportInquirysVO exportInquirysVO){
+    	RespDTO<List<GetExportInquirysDTO>> res = tranServiceClient.getExportInquirys(exportInquirysVO.getInquiryIds());
+    	RespDTOUtil.respNGDeal(res, "导出病历失败");
+    	List<GetExportInquirysDTO> getExportInquirysDTOList = res.data;
+    	HSSFWorkbook workbook = null;
+    	ServletOutputStream outputStream = null;
+    	try{
+        	workbook = new HSSFWorkbook();
+        	HSSFSheet sheet = workbook.createSheet("统计表");
+        	
+        	String[] headers={"序号","性别","年龄","主诉","现病史","其他史","查体","化验","辅检","医嘱","诊断","二次诊断*"};
+        	HSSFRow headRow = sheet.createRow(0);
+        	for (int i =0;i <headers.length;i++){
+        		headRow.createCell(i).setCellValue(headers[i]);
+        	}
+        	
+        	int rowNum=1;
+        	for(GetExportInquirysDTO getExportInquirysDTO : getExportInquirysDTOList){
+        		HSSFRow row=sheet.createRow(rowNum);
+        		row.createCell(0).setCellValue(getExportInquirysDTO.getLineNum());
+        		row.createCell(1).setCellValue(getExportInquirysDTO.getPatientSex());
+        		row.createCell(2).setCellValue(getExportInquirysDTO.getPatientAge());
+        		for(int type=1;type<=9;type++){
+        			row.createCell(type+2).setCellValue(getExportInquirysDTO.getDetailMap().get(type));
+        		}
+        		rowNum++;
+        	}
+        	
+        	String fileName = "data.xls";
+            response.setContentType("application/vnd.ms-excel");
+            response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(fileName, "utf-8"));
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.close();
+        } catch (Exception e){
+        	throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
+        } finally {
+        	try {
+        		if(workbook!=null){
+        			workbook.close();
+        		}
+        	} catch (IOException e) {
+        		e.printStackTrace();
+        	}
+		}
+    }
+    
 
 }

+ 29 - 0
icss-service/src/main/java/com/diagbot/vo/ExportInquirysVO.java

@@ -0,0 +1,29 @@
+package com.diagbot.vo;
+
+import java.util.List;
+
+import javax.validation.constraints.NotEmpty;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description
+ * @author rengb
+ * @time 2019年3月12日下午2:29:43
+ */
+@Getter
+@Setter
+public class ExportInquirysVO {
+	
+	/**
+	 * 问诊记录id集合
+	 */
+	@ApiModelProperty(value="问诊记录id集合",required=true)
+	@NotEmpty(message="问诊记录id集合不能为空")
+	private List<Long> inquiryIds;
+	
+   
+
+}

+ 7 - 0
icss-service/src/main/java/com/diagbot/web/InquiryInfoController.java

@@ -2,6 +2,7 @@ package com.diagbot.web;
 
 import java.util.List;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,6 +25,7 @@ import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.SaveInquiryDTO;
 import com.diagbot.facade.InquiryInfoFacade;
 import com.diagbot.vo.AddDiagnoseSecondVO;
+import com.diagbot.vo.ExportInquirysVO;
 import com.diagbot.vo.GetEvaluationScalesVO;
 import com.diagbot.vo.GetEvaluationsVO;
 import com.diagbot.vo.GetInquiryDetailVO;
@@ -123,6 +125,11 @@ public class InquiryInfoController {
         return RespDTO.onSuc(inquiryInfoFacade.addDiagnoseSecond(addDiagnoseSecondVO));
     }
     
+    @ApiOperation(value = "急诊-导出病历[by:rengb]")
+    @PostMapping("/exportInquirys")
+    public void exportInquirys(HttpServletResponse response,@Valid @RequestBody ExportInquirysVO exportInquirysVO){
+    	inquiryInfoFacade.exportInquirys(response,exportInquirysVO);
+    }
 
 
 }

+ 37 - 0
tran-service/src/main/java/com/diagbot/dto/GetExportInquirysDTO.java

@@ -0,0 +1,37 @@
+package com.diagbot.dto;
+
+import java.util.Map;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2019/3/19 13:56
+ */
+@Getter
+@Setter
+public class GetExportInquirysDTO {
+	
+	/**
+	 * 序号
+	 */
+	private Integer lineNum;
+	
+    /**
+     * 病人性别
+     */
+    private String patientSex;
+	
+    /**
+     * 病人年龄
+     */
+    private Integer patientAge;
+    
+    /**
+     * 主诉到二次诊断
+     */
+    private Map<Integer,String> detailMap;
+
+}

+ 0 - 1
tran-service/src/main/java/com/diagbot/facade/InquiryDetailFacade.java

@@ -27,7 +27,6 @@ public class InquiryDetailFacade extends InquiryDetailServiceImpl {
     public Map<Long, List<InquiryDetail>> getDetailsByInquryIds(List<Long> inquiryIds) {
         QueryWrapper<InquiryDetail> queryWrapper = new QueryWrapper<InquiryDetail>();
         queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
-        			.ne("type", 9)
         			.in("inquiry_id", inquiryIds);
         List<InquiryDetail> inquiryDetails = this.list(queryWrapper);
         return inquiryDetails.stream().collect(Collectors.groupingBy(InquiryDetail::getInquiryId));

+ 58 - 2
tran-service/src/main/java/com/diagbot/facade/InquiryInfoFacade.java

@@ -1,5 +1,6 @@
 package com.diagbot.facade;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -11,12 +12,15 @@ import org.springframework.stereotype.Component;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.GetExportInquirysDTO;
 import com.diagbot.dto.HisInquirysForJzDTO;
 import com.diagbot.entity.InquiryDetail;
 import com.diagbot.entity.InquiryInfo;
 import com.diagbot.entity.PatientInfo;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.SexTypeEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.InquiryDetailServiceImpl;
 import com.diagbot.service.impl.InquiryInfoServiceImpl;
 import com.diagbot.util.BeanUtil;
@@ -25,6 +29,7 @@ import com.diagbot.util.ListUtil;
 import com.diagbot.vo.AddDiagnoseSecondVO;
 import com.diagbot.vo.HisInquirysForJzVO;
 import com.diagbot.vo.SaveInquiryToHisVO;
+import com.google.common.collect.Lists;
 
 /**
  * @Description: 对接层问诊信息业务逻辑
@@ -114,7 +119,7 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl{
             List<Long> inquiryIdList = hisInquirysForJzDTOList.stream().map(i -> i.getInquiryId()).distinct().collect(Collectors.toList());
 
             Map<Long, PatientInfo> patientInfoMap = patientInfoFacade.patientInfoMapByIds(patientIdList);
-            Map<Long, List<InquiryDetail>> inquiryDetailMap = inquiryDetailFacade.getDetailsByInquryIds(inquiryIdList);
+            Map<Long, List<InquiryDetail>> inquiryDetailListMap = inquiryDetailFacade.getDetailsByInquryIds(inquiryIdList);
         	
             hisInquirysForJzDTOList.forEach(i -> {
                 PatientInfo patientInfo = patientInfoMap.get(i.getPatientId());
@@ -125,7 +130,7 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl{
                     i.setPatientAge(DateUtil.yearCompare(patientInfo.getBirthday(), DateUtil.now()));
                 }
                 
-                List<InquiryDetail> detailList= inquiryDetailMap.get(i.getInquiryId());
+                List<InquiryDetail> detailList= inquiryDetailListMap.get(i.getInquiryId()).stream().filter(inquiryDetail->inquiryDetail.getType()!=9).collect(Collectors.toList());
                 i.setDetailList(detailList);
                 String diagnose = detailList.stream().filter(inquiryDetail->inquiryDetail.getType()==7).map(inquiryDetail->inquiryDetail.getContentValue()).collect(Collectors.toList()).get(0);
                 i.setDiagnose(diagnose.split(";")[0]);
@@ -161,6 +166,57 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl{
     	
     	return inquiryDetailFacade.save(inquiryDetail);
     }
+    
+    /**
+     * 急诊-获取需要导出的问诊数据
+     * 
+     * @param inquiryIds
+     * @return
+     */
+    public List<GetExportInquirysDTO> getExportInquirys(List<Long> inquiryIds){
+    	List<GetExportInquirysDTO> getExportInquirysDTOList = new ArrayList<>();
+    	
+    	if(inquiryIds.stream().distinct().count()!=inquiryIds.size()){
+    		throw new CommonException(CommonErrorCode.PARAM_IS_ERROR);
+    	}
+    	
+    	List<InquiryInfo> inquiryInfoList = Lists.newArrayList(listByIds(inquiryIds));
+    	if(inquiryInfoList.size()!=inquiryIds.size()){
+    		throw new CommonException(CommonErrorCode.PARAM_IS_ERROR);
+    	}
+    	
+    	List<Long> patientIdList = inquiryInfoList.stream().map(i -> i.getPatientId()).distinct().collect(Collectors.toList());
+    	Map<Long, PatientInfo> patientInfoMap = patientInfoFacade.patientInfoMapByIds(patientIdList);
+    	Map<Long,InquiryInfo> inquiryInfoMap = inquiryInfoList.stream().collect(Collectors.toMap(InquiryInfo::getId,i->i));
+    	Map<Long, List<InquiryDetail>> inquiryDetailListMap = inquiryDetailFacade.getDetailsByInquryIds(inquiryIds);
+    	
+    	Integer lineNum = 1;
+    	PatientInfo patientInfo = null;
+    	String diagnose = null;
+    	for(Long inquiryId : inquiryIds){
+    		GetExportInquirysDTO getExportInquirysDTO = new GetExportInquirysDTO();
+    		getExportInquirysDTO.setLineNum(lineNum);
+    		patientInfo = patientInfoMap.get(inquiryInfoMap.get(inquiryId).getPatientId());
+        	if (patientInfo != null) {
+        		getExportInquirysDTO.setPatientSex(SexTypeEnum.getName(patientInfo.getSex()));
+        		getExportInquirysDTO.setPatientAge(DateUtil.yearCompare(patientInfo.getBirthday(), DateUtil.now()));
+        	}
+    		
+    		Map<Integer,String> detailMap = inquiryDetailListMap.get(inquiryId).stream().collect(Collectors.toMap(InquiryDetail::getType, i->i.getContentValue()==null?"":i.getContentValue()));
+    		diagnose = detailMap.get(7);
+    		detailMap.put(7, detailMap.get(8));
+    		if(detailMap.get(9)!=null){
+    			diagnose = "";
+    		}
+    		detailMap.put(8, diagnose);
+    		getExportInquirysDTO.setDetailMap(detailMap);
+    		
+    		getExportInquirysDTOList.add(getExportInquirysDTO);
+    		lineNum++;
+    	}
+    	
+    	return getExportInquirysDTOList;
+    }
 	
 
 

+ 13 - 0
tran-service/src/main/java/com/diagbot/web/InquiryInfoController.java

@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.GetExportInquirysDTO;
 import com.diagbot.dto.HisInquirysForJzDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.InquiryInfoFacade;
@@ -75,6 +76,18 @@ public class InquiryInfoController {
 		 return RespDTO.onSuc(inquiryInfoFacade.addDiagnoseSecond(addDiagnoseSecondVO));
 	 }
 	 
+	 /**
+	  * 急诊-获取需要导出的问诊数据
+	  * @param inquiryIds
+	  * @return
+	  */
+	 @PostMapping("/getExportInquirys")
+	 @SysLogger("getExportInquirys")
+	 @ApiIgnore
+	 public RespDTO<List<GetExportInquirysDTO>> getExportInquirys(@RequestBody List<Long> inquiryIds) {
+		 return RespDTO.onSuc(inquiryInfoFacade.getExportInquirys(inquiryIds));
+	 } 
+	 
 	 
 
 }