InquiryInfoFacade.java 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529
  1. package com.diagbot.facade;
  2. import java.io.IOException;
  3. import java.net.URLEncoder;
  4. import java.util.ArrayList;
  5. import java.util.Date;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9. import java.util.Optional;
  10. import java.util.stream.Collectors;
  11. import javax.servlet.ServletOutputStream;
  12. import javax.servlet.http.HttpServletResponse;
  13. import com.diagbot.util.IntegerUtil;
  14. import org.apache.poi.hssf.usermodel.HSSFRow;
  15. import org.apache.poi.hssf.usermodel.HSSFSheet;
  16. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.beans.factory.annotation.Qualifier;
  19. import org.springframework.stereotype.Component;
  20. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  21. import com.baomidou.mybatisplus.core.metadata.IPage;
  22. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  23. import com.diagbot.client.TranServiceClient;
  24. import com.diagbot.dto.GetEvaluationScalesDTO;
  25. import com.diagbot.dto.GetEvaluationsDTO;
  26. import com.diagbot.dto.GetExportInquirysDTO;
  27. import com.diagbot.dto.GetInquiryDetailDTO;
  28. import com.diagbot.dto.GetLastOtherDTO;
  29. import com.diagbot.dto.HisInquiryDTO;
  30. import com.diagbot.dto.HisInquirysForDjDTO;
  31. import com.diagbot.dto.HisInquirysForJzDTO;
  32. import com.diagbot.dto.HospitalInfoDTO;
  33. import com.diagbot.dto.PatientInfoDTO;
  34. import com.diagbot.dto.ReadInquiryDTO;
  35. import com.diagbot.dto.ReadInquiryDrugDTO;
  36. import com.diagbot.dto.RespDTO;
  37. import com.diagbot.dto.SaveInquiryDTO;
  38. import com.diagbot.entity.DoctorInfo;
  39. import com.diagbot.entity.HospitalDept;
  40. import com.diagbot.entity.InquiryDetail;
  41. import com.diagbot.entity.InquiryDrug;
  42. import com.diagbot.entity.InquiryEvaluation;
  43. import com.diagbot.entity.InquiryInfo;
  44. import com.diagbot.entity.InquiryScale;
  45. import com.diagbot.entity.PatientInfo;
  46. import com.diagbot.enums.IsDeleteEnum;
  47. import com.diagbot.enums.SexTypeEnum;
  48. import com.diagbot.enums.SysTypeEnum;
  49. import com.diagbot.exception.CommonErrorCode;
  50. import com.diagbot.exception.CommonException;
  51. import com.diagbot.service.InquiryDetailService;
  52. import com.diagbot.service.InquiryDrugService;
  53. import com.diagbot.service.InquiryScaleService;
  54. import com.diagbot.service.impl.InquiryInfoServiceImpl;
  55. import com.diagbot.util.BeanUtil;
  56. import com.diagbot.util.DateUtil;
  57. import com.diagbot.util.ListUtil;
  58. import com.diagbot.util.RespDTOUtil;
  59. import com.diagbot.util.StringUtil;
  60. import com.diagbot.vo.AddDiagnoseSecondVO;
  61. import com.diagbot.vo.ExportInquirysVO;
  62. import com.diagbot.vo.GetEvaluationScalesVO;
  63. import com.diagbot.vo.GetEvaluationsVO;
  64. import com.diagbot.vo.GetInquiryDetailVO;
  65. import com.diagbot.vo.GetLastOtherVO;
  66. import com.diagbot.vo.HisInquirysForDjVO;
  67. import com.diagbot.vo.HisInquirysForJzVO;
  68. import com.diagbot.vo.HisInquirysVO;
  69. import com.diagbot.vo.IndexDataSaveVO;
  70. import com.diagbot.vo.PatientInfoVO;
  71. import com.diagbot.vo.ReadInquiryVO;
  72. import com.diagbot.vo.SaveInquiryToHisVO;
  73. import com.diagbot.vo.SaveInquiryVO;
  74. /**
  75. * @author rengb
  76. * @Description
  77. * @time 2018年11月23日下午2:08:08
  78. */
  79. @Component
  80. public class InquiryInfoFacade extends InquiryInfoServiceImpl {
  81. @Autowired
  82. private InquiryDetailFacade inquiryDetailFacade;
  83. @Autowired
  84. @Qualifier("inquiryDetailServiceImpl")
  85. private InquiryDetailService inquiryDetailService;
  86. @Autowired
  87. private HospitalInfoFacade hospitalInfoFacade;
  88. @Autowired
  89. private PatientInfoFacade patientInfoFacade;
  90. @Autowired
  91. private DoctorInfoFacade doctorInfoFacade;
  92. @Autowired
  93. private HospitalDeptFacade hospitalDeptFacade;
  94. @Autowired
  95. private TranServiceClient tranServiceClient;
  96. @Autowired
  97. private InquiryDrugFacade inquiryDrugFacade;
  98. @Autowired
  99. @Qualifier("inquiryDrugServiceImpl")
  100. private InquiryDrugService inquiryDrugService;
  101. @Autowired
  102. private InquiryEvaluationFacade inquiryEvaluationFacade;
  103. @Autowired
  104. private InquiryScaleFacade inquiryScaleFacade;
  105. @Autowired
  106. @Qualifier("inquiryScaleServiceImpl")
  107. private InquiryScaleService inquiryScaleService;
  108. @Autowired
  109. private IndexDataFacade indexDataFacade;
  110. /**
  111. * 问诊记录保存
  112. *
  113. * @param saveInquiryVO
  114. * @return
  115. */
  116. public SaveInquiryDTO saveInquiry(SaveInquiryVO saveInquiryVO) {
  117. SaveInquiryDTO saveInquiryDTO = new SaveInquiryDTO();
  118. Date now = DateUtil.now();
  119. QueryWrapper<InquiryInfo> inquiryInfoQe = new QueryWrapper<>();
  120. inquiryInfoQe.eq("is_deleted", IsDeleteEnum.N.getKey());
  121. inquiryInfoQe.eq("hospital_id", saveInquiryVO.getHospitalId());
  122. inquiryInfoQe.eq("hospital_dept_id", saveInquiryVO.getHospitalDeptId());
  123. inquiryInfoQe.eq("doctor_id", saveInquiryVO.getDoctorId());
  124. inquiryInfoQe.eq("patient_id", saveInquiryVO.getPatientId());
  125. inquiryInfoQe.eq("inquiry_code", saveInquiryVO.getInquiryCode());
  126. InquiryInfo inquiryInfo = getOne(inquiryInfoQe);
  127. if (inquiryInfo == null) {
  128. inquiryInfo = new InquiryInfo();
  129. inquiryInfo.setGmtCreate(now);
  130. } else {
  131. inquiryDetailFacade.removeByInquiryId(inquiryInfo.getId());
  132. inquiryDrugFacade.removeByInquiryId(inquiryInfo.getId());
  133. inquiryEvaluationFacade.removeByInquiryId(inquiryInfo.getId());
  134. inquiryScaleFacade.removeByInquiryId(inquiryInfo.getId());
  135. }
  136. inquiryInfo.setGmtModified(now);
  137. BeanUtil.copyProperties(saveInquiryVO, inquiryInfo);
  138. this.saveOrUpdate(inquiryInfo);
  139. Long inquiryId = inquiryInfo.getId();
  140. if (ListUtil.isNotEmpty(saveInquiryVO.getDetailList())) {
  141. List<InquiryDetail> inquiryDetailList = BeanUtil.listCopyTo(saveInquiryVO.getDetailList(), InquiryDetail.class);
  142. inquiryDetailList.forEach(i->{
  143. i.setInquiryId(inquiryId);
  144. i.setGmtCreate(now);
  145. i.setGmtModified(now);
  146. });
  147. inquiryDetailService.saveBatch(inquiryDetailList);
  148. }
  149. if (ListUtil.isNotEmpty(saveInquiryVO.getDrugList())) {
  150. List<InquiryDrug> inquiryDrugList = BeanUtil.listCopyTo(saveInquiryVO.getDrugList(), InquiryDrug.class);
  151. inquiryDrugList.forEach(i -> {
  152. i.setInquiryId(inquiryId);
  153. i.setGmtCreate(now);
  154. i.setGmtModified(now);
  155. });
  156. inquiryDrugService.saveBatch(inquiryDrugList);
  157. }
  158. if (saveInquiryVO.getInquiryEvaluation() != null) {
  159. InquiryEvaluation inquiryEvaluation = new InquiryEvaluation();
  160. inquiryEvaluation.setInquiryId(inquiryId);
  161. inquiryEvaluation.setGmtCreate(now);
  162. inquiryEvaluation.setGmtModified(now);
  163. inquiryEvaluation.setHtmlContent(saveInquiryVO.getInquiryEvaluation().getHtmlContent());
  164. inquiryEvaluationFacade.save(inquiryEvaluation);
  165. if (ListUtil.isNotEmpty(saveInquiryVO.getInquiryEvaluation().getScaleList())) {
  166. List<InquiryScale> inquiryScaleList = BeanUtil.listCopyTo(saveInquiryVO.getInquiryEvaluation().getScaleList(), InquiryScale.class);
  167. inquiryScaleList.forEach(i -> {
  168. i.setInquiryId(inquiryId);
  169. i.setInquiryEvaluationId(inquiryEvaluation.getId());
  170. i.setGmtCreate(now);
  171. i.setGmtModified(now);
  172. });
  173. inquiryScaleService.saveBatch(inquiryScaleList);
  174. }
  175. }
  176. //指标信息保存
  177. if (ListUtil.isNotEmpty(saveInquiryVO.getIndexData())) {
  178. IndexDataSaveVO indexDataSaveVO = new IndexDataSaveVO();
  179. BeanUtil.copyProperties(saveInquiryVO, indexDataSaveVO);
  180. indexDataFacade.saveIndexDatas(indexDataSaveVO);
  181. }
  182. SaveInquiryToHisVO saveInquiryToHisVO = new SaveInquiryToHisVO();
  183. BeanUtil.copyProperties(saveInquiryVO, saveInquiryToHisVO);
  184. saveInquiryToHisVO.setSysType(SysTypeEnum.ICSS_SERVICE.getKey());
  185. RespDTOUtil.respNGDeal(tranServiceClient.saveInquiryToHis(saveInquiryToHisVO), "问诊记录插入tran层失败");
  186. saveInquiryDTO.setInquiryId(inquiryId);
  187. return saveInquiryDTO;
  188. }
  189. /**
  190. * 问诊记录回显
  191. *
  192. * @param readInquiryVO
  193. * @return
  194. */
  195. public ReadInquiryDTO readInquiry(ReadInquiryVO readInquiryVO) {
  196. ReadInquiryDTO readInquiryDTO = new ReadInquiryDTO();
  197. QueryWrapper<InquiryInfo> queryWrapper = new QueryWrapper<InquiryInfo>();
  198. queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
  199. queryWrapper.eq("hospital_id", readInquiryVO.getHospitalId());
  200. queryWrapper.eq("hospital_dept_id", readInquiryVO.getHospitalDeptId());
  201. queryWrapper.eq("doctor_id", readInquiryVO.getDoctorId());
  202. queryWrapper.eq("patient_id", readInquiryVO.getPatientId());
  203. queryWrapper.eq("inquiry_code", readInquiryVO.getInquiryCode());
  204. InquiryInfo inquiryInfo = this.getOne(queryWrapper);
  205. if (inquiryInfo != null) {
  206. //readInquiryDTO.setDataJson(inquiryInfo.getDataJson());
  207. BeanUtil.copyProperties(inquiryInfo, readInquiryDTO);
  208. QueryWrapper<InquiryDetail> inquiryDetailQe = new QueryWrapper<>();
  209. inquiryDetailQe.eq("inquiry_id", inquiryInfo.getId());
  210. readInquiryDTO.setDetailList(inquiryDetailFacade.list(inquiryDetailQe).stream().sorted((a, b) -> a.getType() - b.getType()).collect(Collectors.toList()));
  211. List<InquiryDrug> inquiryDrugList = inquiryDrugFacade.getInquiryDrugs(inquiryInfo.getId());
  212. List<ReadInquiryDrugDTO> drugList = BeanUtil.listCopyTo(inquiryDrugList, ReadInquiryDrugDTO.class);
  213. readInquiryDTO.setDrugList(drugList);
  214. QueryWrapper<InquiryEvaluation> inquiryEvaluationQe = new QueryWrapper<>();
  215. inquiryEvaluationQe.eq("inquiry_id", inquiryInfo.getId());
  216. readInquiryDTO.setInquiryEvaluation(inquiryEvaluationFacade.getOne(inquiryEvaluationQe));
  217. QueryWrapper<InquiryScale> inquiryScaleQe = new QueryWrapper<>();
  218. inquiryScaleQe.eq("inquiry_id", inquiryInfo.getId());
  219. readInquiryDTO.setInquiryScaleList(inquiryScaleFacade.list(inquiryScaleQe));
  220. }
  221. return readInquiryDTO;
  222. }
  223. /**
  224. * 获取最近一次其他史信息
  225. *
  226. * @param getLastOtherVO
  227. * @return
  228. */
  229. public GetLastOtherDTO getLastOther(GetLastOtherVO getLastOtherVO) {
  230. GetLastOtherDTO getLastOtherDTO = new GetLastOtherDTO();
  231. HospitalInfoDTO hospitalInfoDTO = hospitalInfoFacade.getHospitalByCode(getLastOtherVO.getHospitalCode());
  232. PatientInfoVO patientInfoVO = new PatientInfoVO();
  233. patientInfoVO.setHospitalCode(getLastOtherVO.getHospitalCode());
  234. patientInfoVO.setPatientCode(getLastOtherVO.getPatientCode());
  235. PatientInfoDTO patientInfoDTO = patientInfoFacade.getPatientInfo(patientInfoVO);
  236. Map<String, Object> map = new HashMap<>();
  237. map.put("hospitalId", hospitalInfoDTO.getId());
  238. map.put("patientId", patientInfoDTO.getId());
  239. if (!IntegerUtil.isNull(getLastOtherVO.getSign())){
  240. map.put("sign", getLastOtherVO.getSign());
  241. }
  242. InquiryInfo inquiryInfo = baseMapper.getPatientLast(map);
  243. if (inquiryInfo != null) {
  244. getLastOtherDTO.setDataJson(inquiryInfo.getDataJson());
  245. QueryWrapper<InquiryDetail> inquiryDetailQe = new QueryWrapper<>();
  246. inquiryDetailQe.eq("inquiry_id", inquiryInfo.getId());
  247. inquiryDetailQe.eq("type", 3);
  248. InquiryDetail inquiryDetail = inquiryDetailFacade.getOne(inquiryDetailQe);
  249. if (inquiryDetail != null) {
  250. getLastOtherDTO.setOtherStr(inquiryDetail.getContent());
  251. }
  252. }
  253. return getLastOtherDTO;
  254. }
  255. /**
  256. * 历史病历列表
  257. *
  258. * @param hisInquirysVO
  259. * @return
  260. */
  261. public IPage<HisInquiryDTO> hisInquirys(HisInquirysVO hisInquirysVO) {
  262. Page<HisInquiryDTO> hisInquiryDTOPage = new Page<>();
  263. QueryWrapper<InquiryInfo> inquiryInfoQe = new QueryWrapper<>();
  264. inquiryInfoQe.eq("is_deleted", IsDeleteEnum.N.getKey());
  265. inquiryInfoQe.eq("hospital_id", hisInquirysVO.getHospitalId());
  266. inquiryInfoQe.eq(hisInquirysVO.getHospitalDeptId() != null, "hospital_dept_id", hisInquirysVO.getHospitalDeptId());
  267. inquiryInfoQe.eq(hisInquirysVO.getDoctorId() != null, "doctor_id", hisInquirysVO.getDoctorId());
  268. inquiryInfoQe.eq(hisInquirysVO.getPatientId() != null, "patient_id", hisInquirysVO.getPatientId());
  269. inquiryInfoQe.eq(hisInquirysVO.getType() != null, "type", hisInquirysVO.getType());
  270. inquiryInfoQe.eq(hisInquirysVO.getSign() != null, "sign", hisInquirysVO.getSign());
  271. inquiryInfoQe.ge(hisInquirysVO.getStartDate() != null, "gmt_create", hisInquirysVO.getStartDate());
  272. inquiryInfoQe.le(hisInquirysVO.getEndDate() != null, "gmt_create", hisInquirysVO.getEndDate());
  273. inquiryInfoQe.orderByDesc(hisInquirysVO.getOrderType() == 1,"gmt_modified");
  274. inquiryInfoQe.orderByAsc(hisInquirysVO.getOrderType() == 2, "gmt_modified");
  275. if (hisInquirysVO.getDisType() == 1) {
  276. Date nowDate = DateUtil.now();
  277. Date lastDate = DateUtil.addMonth(nowDate, -6);
  278. inquiryInfoQe.ge("gmt_create", lastDate);
  279. inquiryInfoQe.le("gmt_create", nowDate);
  280. inquiryInfoQe.likeRight("diagnose", hisInquirysVO.getDisName());
  281. }
  282. Page<InquiryInfo> inquiryInfoPage = new Page<>(hisInquirysVO.getCurrent(),hisInquirysVO.getSize());
  283. IPage<InquiryInfo> iPage = this.page(inquiryInfoPage, inquiryInfoQe);
  284. BeanUtil.copyProperties(iPage, hisInquiryDTOPage);
  285. List<InquiryInfo> inquiryInfoList = iPage.getRecords();
  286. if (inquiryInfoList.size() == 0) {
  287. return null;
  288. }
  289. List<Long> hospitalDeptIdList = inquiryInfoList.stream().map(i -> i.getHospitalDeptId()).distinct().collect(Collectors.toList());
  290. List<Long> doctorIdList = inquiryInfoList.stream().map(i -> i.getDoctorId()).distinct().collect(Collectors.toList());
  291. List<Long> patientIdList = inquiryInfoList.stream().map(i -> i.getPatientId()).distinct().collect(Collectors.toList());
  292. List<Long> inquiryIdList = inquiryInfoList.stream().map(i -> i.getId()).distinct().collect(Collectors.toList());
  293. Map<Long, HospitalDept> hospitalDeptMap = hospitalDeptFacade.hospitalDeptInfoMapByIds(hospitalDeptIdList);
  294. Map<Long, DoctorInfo> doctorInfoMap = doctorInfoFacade.doctorInfoMapByIds(doctorIdList);
  295. Map<Long, PatientInfo> patientInfoMap = patientInfoFacade.patientInfoMapByIds(patientIdList);
  296. Map<Long, List<InquiryDetail>> inquiryDetailMap = inquiryDetailFacade.getDetailsByInquryIds(inquiryIdList);
  297. List<HisInquiryDTO> hisInquiryDTOList = new ArrayList<>();
  298. inquiryInfoList.forEach(i -> {
  299. HisInquiryDTO hisInquiryDTO = new HisInquiryDTO();
  300. BeanUtil.copyProperties(i, hisInquiryDTO);
  301. hisInquiryDTO.setInquiryDate(i.getGmtModified());
  302. hisInquiryDTO.setInquiryTime(i.getGmtModified());
  303. hisInquiryDTO.setHospitalDeptName(Optional.ofNullable(hospitalDeptMap.get(i.getHospitalDeptId())).map(t -> t.getName()).orElse(null));
  304. hisInquiryDTO.setDoctorName(Optional.ofNullable(doctorInfoMap.get(i.getDoctorId())).map(t -> t.getName()).orElse(null));
  305. PatientInfo patientInfo = patientInfoMap.get(i.getPatientId());
  306. if (patientInfo != null) {
  307. hisInquiryDTO.setPatientName(patientInfo.getName());
  308. hisInquiryDTO.setPatientIdNo(patientInfo.getIdNo());
  309. hisInquiryDTO.setPatientSex(SexTypeEnum.getName(patientInfo.getSex()));
  310. hisInquiryDTO.setPatientAge(DateUtil.yearCompare(patientInfo.getBirthday(), DateUtil.now()));
  311. }
  312. hisInquiryDTO.setDetailList(inquiryDetailMap.get(i.getId()));
  313. hisInquiryDTOList.add(hisInquiryDTO);
  314. });
  315. hisInquiryDTOPage.setRecords(hisInquiryDTOList);
  316. return hisInquiryDTOPage;
  317. }
  318. /**
  319. * 急诊-历史病历列表
  320. *
  321. * @param hisInquirysForJzVO
  322. * @return
  323. */
  324. public HisInquirysForJzDTO hisInquirysForJz(HisInquirysForJzVO hisInquirysForJzVO){
  325. RespDTO<HisInquirysForJzDTO> res = tranServiceClient.hisInquirysForJz(hisInquirysForJzVO);
  326. RespDTOUtil.respNGDeal(res, "获取急诊历史病历列表失败");
  327. return res.data;
  328. }
  329. /**
  330. * 对接-历史病历列表
  331. *
  332. * @param hisInquirysForDjVO
  333. * @return
  334. */
  335. public List<HisInquirysForDjDTO> hisInquirysForDj(HisInquirysForDjVO hisInquirysForDjVO) {
  336. QueryWrapper<InquiryInfo> queryWrapper = new QueryWrapper<InquiryInfo>();
  337. queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
  338. queryWrapper.eq("hospital_id", hisInquirysForDjVO.getHospitalId());
  339. if (hisInquirysForDjVO.getHospitalDeptId() != null) {
  340. queryWrapper.eq("hospital_dept_id", hisInquirysForDjVO.getHospitalDeptId());
  341. }
  342. if (hisInquirysForDjVO.getDoctorId() != null) {
  343. queryWrapper.eq("doctor_id", hisInquirysForDjVO.getDoctorId());
  344. }
  345. if (hisInquirysForDjVO.getPatientId() != null) {
  346. queryWrapper.eq("patient_id", hisInquirysForDjVO.getPatientId());
  347. }
  348. if (StringUtil.isNotBlank(hisInquirysForDjVO.getInquiryCode())) {
  349. queryWrapper.eq("inquiry_code", hisInquirysForDjVO.getInquiryCode());
  350. }
  351. if (hisInquirysForDjVO.getType() != null) {
  352. queryWrapper.eq("type", hisInquirysForDjVO.getType());
  353. }
  354. if (hisInquirysForDjVO.getSign() != null) {
  355. queryWrapper.eq("sign", hisInquirysForDjVO.getSign());
  356. }
  357. if (hisInquirysForDjVO.getStartDate() != null) {
  358. queryWrapper.ge("gmt_create", hisInquirysForDjVO.getStartDate());
  359. }
  360. if (hisInquirysForDjVO.getEndDate() != null) {
  361. queryWrapper.le("gmt_create", hisInquirysForDjVO.getEndDate());
  362. }
  363. if (hisInquirysForDjVO.getOrderType() == 1) {
  364. queryWrapper.orderByDesc("gmt_modified");
  365. } else if (hisInquirysForDjVO.getOrderType() == 2) {
  366. queryWrapper.orderByAsc("gmt_modified");
  367. }
  368. List<InquiryInfo> inquiryInfoList = this.list(queryWrapper);
  369. if (ListUtil.isEmpty(inquiryInfoList)) {
  370. return null;
  371. }
  372. Map<Long, List<InquiryDetail>> inquiryDetailMap = inquiryDetailFacade.getDetailsByInquryIds(inquiryInfoList.stream().map(i -> i.getId()).collect(Collectors.toList()));
  373. List<HisInquirysForDjDTO> hisInquirysForDjDTOList = BeanUtil.listCopyTo(inquiryInfoList, HisInquirysForDjDTO.class);
  374. hisInquirysForDjDTOList.forEach(i -> {
  375. i.setContentList(inquiryDetailMap.get(i.getId()).stream().map(k -> k.getContentValue()).collect(Collectors.toList()));
  376. });
  377. return hisInquirysForDjDTOList;
  378. }
  379. /**
  380. * 病历详情
  381. *
  382. * @param getInquiryDetailVO
  383. * @return
  384. */
  385. public GetInquiryDetailDTO getInquiryDetail(GetInquiryDetailVO getInquiryDetailVO) {
  386. GetInquiryDetailDTO getInquiryDetailDTO = new GetInquiryDetailDTO();
  387. InquiryInfo inquiryInfo = this.getById(getInquiryDetailVO.getInquiryId());
  388. List<InquiryDetail> inquiryDetailList = inquiryDetailFacade.getListByInquryId(getInquiryDetailVO.getInquiryId());
  389. getInquiryDetailDTO.setDataJson(inquiryInfo.getDataJson());
  390. getInquiryDetailDTO.setDetailList(inquiryDetailList);
  391. return getInquiryDetailDTO;
  392. }
  393. /**
  394. * 获取评估结果
  395. *
  396. * @param getEvaluationsVO
  397. * @return
  398. */
  399. public List<GetEvaluationsDTO> getEvaluations(GetEvaluationsVO getEvaluationsVO) {
  400. List<InquiryEvaluation> inquiryEvaluationList = inquiryEvaluationFacade.getEvaluationsByInquiryId(getEvaluationsVO.getInquiryId());
  401. return BeanUtil.listCopyTo(inquiryEvaluationList, GetEvaluationsDTO.class);
  402. }
  403. /**
  404. * 获取评估量表
  405. *
  406. * @param getEvaluationScalesVO
  407. * @return
  408. */
  409. public List<GetEvaluationScalesDTO> getEvaluationScales(GetEvaluationScalesVO getEvaluationScalesVO) {
  410. QueryWrapper<InquiryScale> queryWrapper = new QueryWrapper<InquiryScale>();
  411. queryWrapper.eq("inquiry_id", getEvaluationScalesVO.getInquiryId());
  412. queryWrapper.eq("inquiry_evaluation_id", getEvaluationScalesVO.getInquiryEvaluationId());
  413. List<InquiryScale> inquiryScaleList = inquiryScaleFacade.list(queryWrapper);
  414. return BeanUtil.listCopyTo(inquiryScaleList, GetEvaluationScalesDTO.class);
  415. }
  416. /**
  417. * 急诊-添加二次诊断
  418. *
  419. * @param addDiagnoseSecondVO
  420. * @return
  421. */
  422. public Boolean addDiagnoseSecond(AddDiagnoseSecondVO addDiagnoseSecondVO){
  423. RespDTO<Boolean> res = tranServiceClient.addDiagnoseSecond(addDiagnoseSecondVO);
  424. RespDTOUtil.respNGDeal(res, "添加二次诊断失败");
  425. return res.data;
  426. }
  427. public void exportInquirys(HttpServletResponse response,ExportInquirysVO exportInquirysVO){
  428. RespDTO<List<GetExportInquirysDTO>> res = tranServiceClient.getExportInquirys(exportInquirysVO.getInquiryIds());
  429. RespDTOUtil.respNGDeal(res, "导出病历失败");
  430. List<GetExportInquirysDTO> getExportInquirysDTOList = res.data;
  431. HSSFWorkbook workbook = null;
  432. ServletOutputStream outputStream = null;
  433. try{
  434. workbook = new HSSFWorkbook();
  435. HSSFSheet sheet = workbook.createSheet("统计表");
  436. String[] headers={"序号","性别","年龄","主诉","现病史","其他史","查体","化验","辅检","医嘱","诊断","二次诊断*"};
  437. HSSFRow headRow = sheet.createRow(0);
  438. for (int i =0;i <headers.length;i++){
  439. headRow.createCell(i).setCellValue(headers[i]);
  440. }
  441. int rowNum=1;
  442. for(GetExportInquirysDTO getExportInquirysDTO : getExportInquirysDTOList){
  443. HSSFRow row=sheet.createRow(rowNum);
  444. row.createCell(0).setCellValue(getExportInquirysDTO.getLineNum());
  445. row.createCell(1).setCellValue(getExportInquirysDTO.getPatientSex());
  446. row.createCell(2).setCellValue(getExportInquirysDTO.getPatientAge());
  447. for(int type=1;type<=9;type++){
  448. row.createCell(type+2).setCellValue(getExportInquirysDTO.getDetailMap().get(type));
  449. }
  450. rowNum++;
  451. }
  452. String fileName = "data.xls";
  453. response.setContentType("application/vnd.ms-excel");
  454. response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(fileName, "utf-8"));
  455. outputStream = response.getOutputStream();
  456. workbook.write(outputStream);
  457. outputStream.close();
  458. } catch (Exception e){
  459. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
  460. } finally {
  461. try {
  462. if(workbook!=null){
  463. workbook.close();
  464. }
  465. } catch (IOException e) {
  466. e.printStackTrace();
  467. }
  468. }
  469. }
  470. }