12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394 |
- package com.diagbot.facade;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.diagbot.aggregate.AverageStatisticsAggregate;
- import com.diagbot.aggregate.MrStatisticsAggregate;
- import com.diagbot.aggregate.ResultStatisticsAggregate;
- import com.diagbot.dto.*;
- import com.diagbot.entity.QcCasesEntry;
- import com.diagbot.entity.SysHospitalSet;
- import com.diagbot.exception.CommonErrorCode;
- import com.diagbot.exception.CommonException;
- import com.diagbot.util.*;
- import com.diagbot.vo.*;
- import com.google.common.collect.Lists;
- import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
- import org.apache.ibatis.annotations.Param;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- import java.text.DecimalFormat;
- import java.util.*;
- import java.util.stream.Collectors;
- /**
- * @Description:
- * @Author:zhaops
- * @time: 2020/4/13 16:45
- */
- @Component
- public class ConsoleFacade {
- @Autowired
- private FilterFacade filterFacade;
- @Autowired
- private DataBeanAggregateQueryFacade dataBeanAggregateQueryFacade;
- @Autowired
- private AverageStatisticsAggregate averageStatisticsAggregate;
- @Autowired
- private MrStatisticsAggregate mrStatisticsAggregate;
- @Autowired
- private ResultStatisticsAggregate resultStatisticsAggregate;
- @Autowired
- private QcresultInfoFacade qcresultInfoFacade;
- @Autowired
- private HomePageFacade homePageFacade;
- @Autowired
- private BehospitalInfoFacade behospitalInfoFacade;
- @Autowired
- private SysHospitalSetFacade sysHospitalSetFacade;
- @Autowired
- private QcCasesEntryFacade qcCasesEntryFacade;
- //region-----------------------聚合接口开始-------------------------------
- /**
- * 病历相关统计
- *
- * @param filterVO
- * @return
- */
- public Map<String, Object> mrStatistics(FilterVO filterVO) {
- Map<String, Object> retMap = new LinkedHashMap<>();
- filterFacade.filterVOSet(filterVO);
- try {
- Map<String, Object> invokeParams = new HashMap<>();
- invokeParams.put("filterVO", filterVO);
- retMap
- = dataBeanAggregateQueryFacade.get("setAllMr", invokeParams, Map.class);
- } catch (Exception e) {
- throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
- }
- return retMap;
- }
- /**
- * 缺陷相关统计
- *
- * @param filterVO
- * @return
- */
- public Map<String, Object> resultStatistics(FilterVO filterVO) {
- Map<String, Object> retMap = new LinkedHashMap<>();
- filterFacade.filterVOSet(filterVO);
- try {
- Map<String, Object> invokeParams = new HashMap<>();
- invokeParams.put("filterVO", filterVO);
- retMap
- = dataBeanAggregateQueryFacade.get("setAllResult", invokeParams, Map.class);
- } catch (Exception e) {
- throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
- }
- return retMap;
- }
- /**
- * 平局值相关统计
- *
- * @param filterVO
- * @return
- */
- public Map<String, Object> averageStatistics(FilterVO filterVO) {
- Map<String, Object> retMap = new LinkedHashMap<>();
- filterFacade.filterVOSet(filterVO);
- try {
- Map<String, Object> invokeParams = new HashMap<>();
- invokeParams.put("filterVO", filterVO);
- retMap
- = dataBeanAggregateQueryFacade.get("setAllAverage", invokeParams, Map.class);
- } catch (Exception e) {
- throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
- }
- return retMap;
- }
- //endregion-----------------------聚合接口结束-------------------------------
- //region-----------------------单独接口开始-------------------------------
- /**
- * 平均住院天数
- *
- * @param filterVO
- * @return
- */
- public Map<String, Object> getAverageDayNum(FilterVO filterVO) {
- Map<String, Object> retMap = new HashMap<>();
- filterFacade.filterVOSet(filterVO);
- List<AverageStatisticsDTO> averageDayNumList = averageStatisticsAggregate.getAverageDayNum(filterVO);
- if (ListUtil.isNotEmpty(averageDayNumList)) {
- retMap.put("平均住院日", averageDayNumList);
- }
- return retMap;
- }
- /**
- * 平均住院费用
- *
- * @param filterVO
- * @return
- */
- public Map<String, Object> getAverageFee(FilterVO filterVO) {
- Map<String, Object> retMap = new HashMap<>();
- filterFacade.filterVOSet(filterVO);
- List<AverageStatisticsDTO> averageFeeList = averageStatisticsAggregate.getAverageFee(filterVO);
- if (ListUtil.isNotEmpty(averageFeeList)) {
- retMap.put("平均住院费用", averageFeeList);
- }
- return retMap;
- }
- /**
- * 质控平均分按科室统计
- *
- * @param filterVO
- * @return
- */
- public Map<String, Object> getAverageScore(FilterVO filterVO) {
- Map<String, Object> retMap = new HashMap<>();
- filterFacade.filterVOSet(filterVO);
- List<AverageStatisticsDTO> averageScoreList = averageStatisticsAggregate.getAverageScore(filterVO);
- if (ListUtil.isNotEmpty(averageScoreList)) {
- retMap.put("各科室质控平均分", averageScoreList);
- }
- return retMap;
- }
- /**
- * 各科室质控平均分(首页)-根据内外科系统统计
- *
- * @param filterVO
- * @return
- */
- public List<AverageStatisticsDTO> getAverageScoreByDeptClass(FilterVO filterVO) {
- filterFacade.filterVOSet(filterVO);
- List<AverageStatisticsDTO> retAverageScoreList = Lists.newLinkedList();
- List<AverageStatisticsDTO> averageScoreList = qcresultInfoFacade.getAverageScoreByDeptClass(filterVO);
- Integer limitCount = filterVO.getLimitCount();
- //质控平均分
- if (ListUtil.isNotEmpty(averageScoreList)) {
- retAverageScoreList = averageStatisticsAggregate.getLimitAverageList(averageScoreList, limitCount);
- }
- return retAverageScoreList;
- }
- /**
- * 各科室甲级病历占比
- *
- * @param filterVO
- * @return
- */
- public Map<String, Object> getLevelResultDept(FilterVO filterVO) {
- Map<String, Object> retMap = new HashMap<>();
- filterFacade.filterVOSet(filterVO);
- List<QcResultPercentDTO> levelResults = mrStatisticsAggregate.getLevelResultDept(filterVO);
- if (ListUtil.isNotEmpty(levelResults)) {
- retMap.put("各科室甲级病历占比", levelResults);
- }
- return retMap;
- }
- /**
- * 出院人数统计
- *
- * @param filterVO
- * @return
- */
- public Map<String, Object> leaveHosCount(FilterVO filterVO) {
- Map<String, Object> retMap = new HashMap<>();
- filterFacade.filterVOSet(filterVO);
- Map<String, Object> leaveHosMap = new HashMap<>();
- try {
- Map<String, Object> invokeParams = new HashMap<>();
- invokeParams.put("filterVO", filterVO);
- leaveHosMap
- = dataBeanAggregateQueryFacade.get("setAllLeaveHos", invokeParams, Map.class);
- } catch (Exception e) {
- throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
- }
- if (leaveHosMap != null) {
- retMap.put("出院人数统计", leaveHosMap);
- }
- return retMap;
- }
- /**
- * 质控病历统计
- *
- * @param filterVO
- * @return
- */
- public Map<String, Object> mrCount(FilterVO filterVO) {
- Map<String, Object> retMap = new HashMap<>();
- filterFacade.filterVOSet(filterVO);
- List<NumDTO> mrCountList = mrStatisticsAggregate.mrCount(filterVO);
- if (ListUtil.isNotEmpty(mrCountList)) {
- retMap.put("病历数统计", mrCountList);
- }
- return retMap;
- }
- /**
- * 各模块缺陷占比排行
- *
- * @param filterVO
- * @return
- */
- public Map<String, Object> entryCountGroupByCase(FilterVO filterVO) {
- Map<String, Object> retMap = new HashMap<>();
- filterFacade.filterVOSet(filterVO);
- List<NumDTO> caseList = resultStatisticsAggregate.entryCountGroupByCase(filterVO);
- if (ListUtil.isNotEmpty(caseList)) {
- retMap.put("各模块缺陷占比排行", caseList);
- }
- return retMap;
- }
- /**
- * 条目缺陷占比
- *
- * @param filterVO
- * @return
- */
- public Map<String, Object> entryCountGroupByEntry(FilterVO filterVO) {
- Map<String, Object> retMap = new HashMap<>();
- filterFacade.filterVOSet(filterVO);
- List<NumDTO> entryList = resultStatisticsAggregate.entryCountGroupByEntry(filterVO);
- if (ListUtil.isNotEmpty(entryList)) {
- retMap.put("条目缺陷占比", entryList);
- }
- return retMap;
- }
- /**
- * 单项否决缺陷占比
- *
- * @param filterVO
- * @return
- */
- public List<EntryNumDTO> entryRejectPercent(FilterVO filterVO) {
- List<EntryNumDTO> retList = Lists.newLinkedList();
- filterFacade.filterVOSet(filterVO);
- Integer limitCount = filterVO.getLimitCount();
- List<EntryNumDTO> numDTOList = qcresultInfoFacade.entryRejectPercent(filterVO);
- if (ListUtil.isNotEmpty(numDTOList)) {
- if (numDTOList.size() <= limitCount) {
- retList = numDTOList;
- } else {
- retList = numDTOList.subList(0, limitCount);
- }
- }
- return retList;
- }
- /**
- * 各科室甲/乙/丙级病历占比
- *
- * @param filterVO
- * @return
- */
- public List<DeptNumDTO> qcResultLevelPercent(FilterVO filterVO) {
- if (StringUtil.isBlank(filterVO.getLevel())) {
- throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "请输入病历等级");
- }
- List<DeptNumDTO> retList = Lists.newLinkedList();
- filterFacade.filterVOSet(filterVO);
- Integer limitCount = filterVO.getLimitCount();
- List<DeptNumDTO> numDTOList = qcresultInfoFacade.qcResultLevelPercent(filterVO);
- if (ListUtil.isNotEmpty(numDTOList)) {
- if (numDTOList.size() <= limitCount) {
- retList = numDTOList;
- } else {
- retList = numDTOList.subList(0, limitCount);
- }
- }
- return retList;
- }
- /**
- * 各科室缺陷占比
- *
- * @param filterVO
- * @return
- */
- public Map<String, Object> entryByDept(FilterVO filterVO) {
- Map<String, Object> retMap = new HashMap<>();
- filterFacade.filterVOSet(filterVO);
- List<NumDTO> deptList = resultStatisticsAggregate.entryByDept(filterVO);
- if (ListUtil.isNotEmpty(deptList)) {
- retMap.put("各科室缺陷占比", deptList);
- }
- return retMap;
- }
- //endregion-----------------------单独接口结束-------------------------------
- //region_______________________分页接口开始-------------------------------
- /**
- * 各模块缺陷占比(分页)
- *
- * @param filterPageVO
- * @return
- */
- public IPage<NumDTO> entryCountGroupByCasePage(FilterPageVO filterPageVO) {
- filterFacade.filterPageVOSet(filterPageVO);
- IPage<NumDTO> page = qcresultInfoFacade.entryCountGroupByCasePage(filterPageVO);
- return page;
- }
- /**
- * 缺陷详情(分页)
- *
- * @param filterPageVO
- * @return
- */
- public IPage<EntryNumGroupDTO> entryCountGroupByEntryPage(FilterPageVO filterPageVO) {
- filterFacade.filterPageVOSet(filterPageVO);
- if (filterPageVO.getDeptName().equals("全院")) {
- filterPageVO.setDeptName("");
- }
- IPage<EntryNumGroupDTO> page = qcresultInfoFacade.entryCountGroupByEntryPage(filterPageVO);
- return page;
- }
- /**
- * 按科室统计平均住院天数(分页)
- *
- * @param filterPageByAverageVO
- * @return
- */
- public IPage<AverageStatisticsDTO> getAverageDayNumPage(FilterPageByAverageVO filterPageByAverageVO) {
- filterFacade.filterPageByAverageVOSet(filterPageByAverageVO);
- IPage<AverageStatisticsDTO> page = homePageFacade.getAverageDayNumPage(filterPageByAverageVO);
- return page;
- }
- /**
- * 按科室统计平均住院费用(分页)
- *
- * @param filterPageByAverageVO
- * @return
- */
- public IPage<AverageStatisticsFeeDTO> getAverageFeePage(FilterPageByAverageVO filterPageByAverageVO) {
- filterFacade.filterPageByAverageVOSet(filterPageByAverageVO);
- IPage<AverageStatisticsFeeDTO> page = homePageFacade.getAverageFeePage(filterPageByAverageVO);
- return page;
- }
- /**
- * 各科室质控平均分(分页)
- *
- * @param filterPageVO
- * @return
- */
- public IPage<AverageStatisticsDTO> getAverageScoreByDeptPage(FilterPageVO filterPageVO) {
- filterFacade.filterPageVOSet(filterPageVO);
- IPage<AverageStatisticsDTO> page = qcresultInfoFacade.getAverageScoreByDeptPage(filterPageVO);
- return page;
- }
- /**
- * 各科室缺陷占比排行(分页)
- *
- * @param filterPageVO
- * @return
- */
- public IPage<NumDTO> resultStatisticsByDeptPage(FilterPageVO filterPageVO) {
- filterFacade.filterPageVOSet(filterPageVO);
- IPage<NumDTO> page = behospitalInfoFacade.resultStatisticsByDeptPage(filterPageVO);
- return page;
- }
- /**
- * 各科室甲级病历占比排行(分页)
- *
- * @param filterPageVO
- * @return
- */
- public IPage<QcResultPercentDTO> levelPercentGroupByDeptPage(FilterPageVO filterPageVO) {
- filterFacade.filterPageVOSet(filterPageVO);
- IPage<QcResultPercentDTO> page = qcresultInfoFacade.levelPercentGroupByDeptPage(filterPageVO);
- return page;
- }
- /**
- * 条目缺陷占比(内页)
- *
- * @param filterPageVO
- * @return
- */
- public IPage<EntryNumDTO> entryGroupByEntryInnerPage(FilterPageVO filterPageVO) {
- filterFacade.filterPageVOSet(filterPageVO);
- IPage<EntryNumDTO> page = qcresultInfoFacade.entryGroupByEntryInnerPage(filterPageVO);
- return page;
- }
- //endregion-----------------------分页接口结束-------------------------------
- /**
- * 各科室缺陷占比(组合)
- *
- * @param filterOrderVO
- * @return
- */
- public List<LevelStatisticsDTO> levelStatistics(FilterOrderVO filterOrderVO) {
- filterFacade.filterOrderVOSet(filterOrderVO);
- List<LevelStatisticsDTO> records = behospitalInfoFacade.levelStatistics(filterOrderVO);
- return records;
- }
- /**
- * 各科室缺陷占比(组合)-全院-根据内外科系统统计(台州)
- *
- * @param filterOrderVO
- * @return
- */
- public List<LevelStatisticsTZDTO> levelStatisticsByDeptClass_TZ(FilterOrderVO filterOrderVO) {
- filterFacade.filterOrderVOSet(filterOrderVO);
- List<LevelStatisticsTZDTO> records = behospitalInfoFacade.levelStatisticsByDeptClass_TZ(filterOrderVO);
- return records;
- }
- /**
- * 病案首页合格率占比
- *
- * @param filterOrderVO
- * @return
- */
- public List<HomePageNumDTO> homePageLevelStatistics(FilterOrderVO filterOrderVO) {
- filterFacade.filterOrderVOSet(filterOrderVO);
- List<HomePageNumDTO> records = behospitalInfoFacade.homePageLevelStatistics(filterOrderVO);
- //没有科室过滤时增加全院数据
- if (StringUtil.isBlank(filterOrderVO.getName()) || filterOrderVO.getName().equals("全院")) {
- HomePageNumDTO item = getGlobleRecord(records);
- if (item != null) {
- records.add(0, item);
- }
- }
- return records;
- }
- /**
- * 病案首页合格率占比
- *
- * @param filterOrderVO
- * @return
- */
- public List<HomePageNumDTO> homePageLevelLimit(FilterOrderVO filterOrderVO) {
- filterFacade.filterOrderVOSet(filterOrderVO);
- List<HomePageNumDTO> records = behospitalInfoFacade.homePageLevelStatistics(filterOrderVO);
- HomePageNumDTO item = getGlobleRecord(records);
- if (item != null) {
- records.add(0, item);
- }
- records = records
- .stream()
- .limit(filterOrderVO.getLimitCount())
- .collect(Collectors.toList());
- return records;
- }
- /**
- * 增加全院记录
- *
- * @param records
- * @return
- */
- public HomePageNumDTO getGlobleRecord(List<HomePageNumDTO> records) {
- DecimalFormat df = new DecimalFormat("#0.00");
- HomePageNumDTO item = new HomePageNumDTO();
- if (ListUtil.isEmpty(records)) {
- return null;
- }
- //总病历数
- Integer mrNum = records
- .stream()
- .map(HomePageNumDTO::getMrNum)
- .reduce(0, Integer::sum);
- if (mrNum == null || mrNum == 0) {
- return null;
- }
- //总缺陷数
- Integer entryNum = records
- .stream()
- .map(HomePageNumDTO::getEntryNum)
- .reduce(0, Integer::sum);
- //总分
- Double totleValue = records
- .stream()
- .map(i -> BigDecimal.valueOf(i.getTotleValue()))
- .reduce(BigDecimal.ZERO, BigDecimal::add)
- .doubleValue();
- //平均分
- Double averageValue = BigDecimal.valueOf(totleValue)
- .divide(BigDecimal.valueOf(mrNum), 2, RoundingMode.HALF_UP)
- .doubleValue();
- //合格病历总数
- Integer firstLevelNum = records
- .stream()
- .map(HomePageNumDTO::getFirstLevelNum)
- .reduce(0, Integer::sum);
- //合格病历占比
- Double firstLevelPercent = BigDecimal.valueOf(firstLevelNum)
- .divide(BigDecimal.valueOf(mrNum), 4, RoundingMode.HALF_UP)
- .doubleValue();
- String firstLevelPercentStr
- = df.format(BigDecimal.valueOf(firstLevelPercent).multiply(BigDecimal.valueOf(100))) + "%";
- //不合格病历数
- Integer secondLevelNum = records
- .stream()
- .map(HomePageNumDTO::getSecondLevelNum)
- .reduce(0, Integer::sum);
- //不合格病历占比
- Double secondLevelPercent = BigDecimal.valueOf(secondLevelNum)
- .divide(BigDecimal.valueOf(mrNum), 4, RoundingMode.HALF_UP)
- .doubleValue();
- String secondLevelPercentStr
- = df.format(BigDecimal.valueOf(secondLevelPercent).multiply(BigDecimal.valueOf(100))) + "%";
- //条目缺陷总数(模块下条目*病历数)
- Integer entryTotleNum = records
- .stream()
- .map(HomePageNumDTO::getEntryTotleNum)
- .reduce(0, Integer::sum);
- //空项总数
- Integer emptyNum = records
- .stream()
- .map(HomePageNumDTO::getEmptyNum)
- .reduce(0, Integer::sum);
- Double emptyPercent = BigDecimal.valueOf(entryTotleNum - emptyNum)
- .divide(BigDecimal.valueOf(entryTotleNum), 4, RoundingMode.HALF_UP)
- .doubleValue();
- String emptyPercentStr
- = df.format(BigDecimal.valueOf(emptyPercent).multiply(BigDecimal.valueOf(100))) + "%";
- //错误项总数
- Integer errorNum = records
- .stream()
- .map(HomePageNumDTO::getErrorNum)
- .reduce(0, Integer::sum);
- Double errorPercent = BigDecimal.valueOf(entryTotleNum - errorNum)
- .divide(BigDecimal.valueOf(entryTotleNum), 4, RoundingMode.HALF_UP)
- .doubleValue();
- String errorPercentStr
- = df.format(BigDecimal.valueOf(errorPercent).multiply(BigDecimal.valueOf(100))) + "%";
- item.setDeptName("全院");
- item.setEntryNum(entryNum);
- item.setMrNum(mrNum);
- item.setTotleValue(totleValue);
- item.setAverageValue(averageValue);
- item.setFirstLevelNum(firstLevelNum);
- item.setFirstLevelPercent(firstLevelPercent);
- item.setFirstLevelPercentStr(firstLevelPercentStr);
- item.setSecondLevelNum(secondLevelNum);
- item.setSecondLevelPercent(secondLevelPercent);
- item.setSecondLevelPercentStr(secondLevelPercentStr);
- item.setEntryTotleNum(entryTotleNum);
- item.setEmptyNum(emptyNum);
- item.setEmptyPercent(emptyPercent);
- item.setEmptyPercentStr(emptyPercentStr);
- item.setErrorNum(errorNum);
- item.setErrorPercent(errorPercent);
- item.setErrorPercentStr(errorPercentStr);
- return item;
- }
- /**
- * 条目缺陷质控评分页(内页)
- *
- * @param qcResultShortPageVO
- * @return
- */
- public IPage<QcResultShortDTO> qcResultShortPage(QcResultShortPageVO qcResultShortPageVO) {
- filterFacade.qcResultShortPageVOSet(qcResultShortPageVO);
- IPage<QcResultShortDTO> page = behospitalInfoFacade.qcResultShortPage(qcResultShortPageVO);
- return page;
- }
- /**
- * 关键条目缺陷占比统计
- *
- * @param entryStatisticsVO
- * @return
- */
- public List<EntryStatisticsDTO> entryStatistics(EntryStatisticsVO entryStatisticsVO) {
- filterFacade.entryStatisticsVOSet(entryStatisticsVO);
- if (entryStatisticsVO.getDeptName().equals("全院")) {
- entryStatisticsVO.setDeptName("");
- }
- List<EntryStatisticsDTO> records = behospitalInfoFacade.entryStatistics(entryStatisticsVO);
- //增加全院数据
- if (entryStatisticsVO.getDeptName().equals("")) {
- EntryStatisticsDTO record = getEntryGlobleRecord(records);
- if (record != null) {
- records.add(0, record);
- }
- }
- return records;
- }
- /**
- * 关键条目缺陷占比统计增加全院记录
- *
- * @param records
- * @return
- */
- private EntryStatisticsDTO getEntryGlobleRecord(List<EntryStatisticsDTO> records) {
- DecimalFormat df = new DecimalFormat("#0.00");
- if (ListUtil.isEmpty(records)) {
- return null;
- }
- EntryStatisticsDTO record = new EntryStatisticsDTO();
- record.setDeptName("全院");
- //未在24小时内完成会诊
- Integer consultationNum = records
- .stream()
- .map(EntryStatisticsDTO::getConsultationNum)
- .reduce(0, Integer::sum);
- record.setConsultationNum(consultationNum);
- record.setConsultationEntryId(records.get(0).getConsultationEntryId());
- Integer consultationMRNum = records
- .stream()
- .map(EntryStatisticsDTO::getConsultationMRNum)
- .reduce(0, Integer::sum);
- record.setConsultationMRNum(consultationMRNum);
- if (consultationMRNum != null && !consultationMRNum.equals(0)) {
- Double consultationPercent = BigDecimal.valueOf(consultationNum)
- .divide(BigDecimal.valueOf(consultationMRNum), 4, RoundingMode.HALF_UP)
- .doubleValue();
- String consultationPercentStr
- = df.format(BigDecimal.valueOf(consultationPercent).multiply(BigDecimal.valueOf(100))) + "%";
- record.setConsultationPercent(consultationPercent);
- record.setConsultationPercentStr(consultationPercentStr);
- }
- //手术记录名称不匹配
- Integer operationNameNum = records
- .stream()
- .map(EntryStatisticsDTO::getOperationNameNum)
- .reduce(0, Integer::sum);
- record.setOperationNameNum(operationNameNum);
- record.setOperationNameEntryId(records.get(0).getOperationNameEntryId());
- Integer operationMRNum = records
- .stream()
- .map(EntryStatisticsDTO::getOperationMRNum)
- .reduce(0, Integer::sum);
- record.setOperationMRNum(operationMRNum);
- if (operationMRNum != null && !operationMRNum.equals(0)) {
- Double operationNamePercent = BigDecimal.valueOf(operationNameNum)
- .divide(BigDecimal.valueOf(operationMRNum), 4, RoundingMode.HALF_UP)
- .doubleValue();
- String operationNamePercentStr
- = df.format(BigDecimal.valueOf(operationNamePercent).multiply(BigDecimal.valueOf(100))) + "%";
- record.setOperationNamePercent(operationNamePercent);
- record.setOperationNamePercentStr(operationNamePercentStr);
- }
- //术后首程未在15分钟内完成
- Integer operation15MinuteNum = records
- .stream()
- .map(EntryStatisticsDTO::getOperation15MinuteNum)
- .reduce(0, Integer::sum);
- record.setOperation15MinuteNum(operation15MinuteNum);
- record.setOperation15MinuteEntryId(records.get(0).getOperation15MinuteEntryId());
- if (operationMRNum != null && !operationMRNum.equals(0)) {
- Double operation15MinutePercent = BigDecimal.valueOf(operation15MinuteNum)
- .divide(BigDecimal.valueOf(operationMRNum), 4, RoundingMode.HALF_UP)
- .doubleValue();
- String operation15MinutePercentStr
- = df.format(BigDecimal.valueOf(operation15MinutePercent).multiply(BigDecimal.valueOf(100))) + "%";
- record.setOperation15MinutePercent(operation15MinutePercent);
- record.setOperation15MinutePercentStr(operation15MinutePercentStr);
- }
- //病案首页手术时间不匹配
- Integer operationTimeNum = records
- .stream()
- .map(EntryStatisticsDTO::getOperationTimeNum)
- .reduce(0, Integer::sum);
- record.setOperationTimeNum(operationTimeNum);
- record.setOperationTimeEntryId(records.get(0).getOperationTimeEntryId());
- if (operationMRNum != null && !operationMRNum.equals(0)) {
- Double operationTimePercent = BigDecimal.valueOf(operationTimeNum)
- .divide(BigDecimal.valueOf(operationMRNum), 4, RoundingMode.HALF_UP)
- .doubleValue();
- String operationTimePercentStr
- = df.format(BigDecimal.valueOf(operationTimePercent).multiply(BigDecimal.valueOf(100))) + "%";
- record.setOperationTimePercent(operationTimePercent);
- record.setOperationTimePercentStr(operationTimePercentStr);
- }
- //未在6小时内书写危机值记录
- Integer crisisNum = records
- .stream()
- .map(EntryStatisticsDTO::getCrisisNum)
- .reduce(0, Integer::sum);
- record.setCrisisNum(crisisNum);
- record.setCrisisEntryId(records.get(0).getCrisisEntryId());
- Integer crisisMRNum = records
- .stream()
- .map(EntryStatisticsDTO::getCrisisMRNum)
- .reduce(0, Integer::sum);
- record.setCrisisMRNum(crisisMRNum);
- if (crisisMRNum != null && !crisisMRNum.equals(0)) {
- Double crisisPercent = BigDecimal.valueOf(crisisNum)
- .divide(BigDecimal.valueOf(crisisMRNum), 4, RoundingMode.HALF_UP)
- .doubleValue();
- String crisisPercentStr
- = df.format(BigDecimal.valueOf(crisisPercent).multiply(BigDecimal.valueOf(100))) + "%";
- record.setCrisisPercent(crisisPercent);
- record.setCrisisPercentStr(crisisPercentStr);
- }
- //病人住院超过30天,阶段小节书写
- Integer stageSummaryNum = records
- .stream()
- .map(EntryStatisticsDTO::getStageSummaryNum)
- .reduce(0, Integer::sum);
- record.setStageSummaryNum(stageSummaryNum);
- record.setStageSummaryEntryId(records.get(0).getStageSummaryEntryId());
- Integer stageSummaryMRNum = records
- .stream()
- .map(EntryStatisticsDTO::getStageSummaryMRNum)
- .reduce(0, Integer::sum);
- record.setStageSummaryMRNum(stageSummaryMRNum);
- if (stageSummaryMRNum != null && !stageSummaryMRNum.equals(0)) {
- Double stageSummaryPercent = BigDecimal.valueOf(stageSummaryNum)
- .divide(BigDecimal.valueOf(stageSummaryMRNum), 4, RoundingMode.HALF_UP)
- .doubleValue();
- String stageSummaryPercentStr
- = df.format(BigDecimal.valueOf(stageSummaryPercent).multiply(BigDecimal.valueOf(100))) + "%";
- record.setStageSummaryPercent(stageSummaryPercent);
- record.setStageSummaryPercentStr(stageSummaryPercentStr);
- }
- //住院超过31日病人数
- Integer beHosGT31DaysMRNum = records
- .stream()
- .map(EntryStatisticsDTO::getBeHosGT31DaysMRNum)
- .reduce(0, Integer::sum);
- record.setBeHosGT31DaysMRNum(beHosGT31DaysMRNum);
- return record;
- }
- /**
- * 病案首页合格率、完整率、改善率统计
- *
- * @param filterVO
- * @return
- */
- public Map<String, Object> homePageMRCount(FilterVO filterVO) {
- Map<String, Object> retMap = new HashMap<>();
- retMap.put("合格率", null);
- retMap.put("不合格率", null);
- retMap.put("完整率", null);
- retMap.put("改善率", null);
- filterFacade.filterVOSet(filterVO);
- try {
- Map<String, Object> invokeParams = new HashMap<>();
- invokeParams.put("filterVO", filterVO);
- retMap
- = dataBeanAggregateQueryFacade.get("setAllHomePage", invokeParams, Map.class);
- } catch (Exception e) {
- throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
- }
- return retMap;
- }
- /**
- * 离院病人质控评分详情页
- *
- * @param qcResultShortPageVO
- * @return
- */
- public IPage<QcResultShortDTO> leaveHosMRPage(QcResultShortPageVO qcResultShortPageVO) {
- filterFacade.qcResultShortPageVOSet(qcResultShortPageVO);
- IPage<QcResultShortDTO> page = behospitalInfoFacade.leaveHosMRPage(qcResultShortPageVO);
- return page;
- }
- /**
- * 质控核查统计(内页)
- *
- * @param filterOrderVO
- * @return
- */
- public List<HomePageImproveDTO> qcCheckStatistics(FilterOrderVO filterOrderVO) {
- filterFacade.filterOrderVOSet(filterOrderVO);
- List<HomePageImproveDTO> records = behospitalInfoFacade.qcCheckStatistics(filterOrderVO);
- //增加全院数据
- if (StringUtil.isBlank(filterOrderVO.getName()) || filterOrderVO.getName().equals("全院")) {
- HomePageImproveDTO item = getGlobleRecord_improve(records);
- if (item != null) {
- records.add(0, item);
- }
- }
- return records;
- }
- /**
- * 增加全院记录
- *
- * @param records
- * @return
- */
- public HomePageImproveDTO getGlobleRecord_improve(List<HomePageImproveDTO> records) {
- DecimalFormat df = new DecimalFormat("#0.00");
- HomePageImproveDTO item = new HomePageImproveDTO();
- if (ListUtil.isEmpty(records)) {
- return null;
- }
- item.setDeptName("全院");
- //总病历数
- Integer mrNum = records
- .stream()
- .map(HomePageImproveDTO::getMrNum)
- .reduce(0, Integer::sum);
- if (mrNum == null || mrNum == 0) {
- return null;
- }
- item.setMrNum(mrNum);
- //核查病历数
- Integer checkedNum = records
- .stream()
- .map(HomePageImproveDTO::getCheckedNum)
- .reduce(0, Integer::sum);
- item.setCheckedNum(checkedNum);
- if (mrNum != null && !mrNum.equals(0)) {
- //核查病历占比
- Double checkedPercent = BigDecimal.valueOf(checkedNum)
- .divide(BigDecimal.valueOf(mrNum), 4, RoundingMode.HALF_UP)
- .doubleValue();
- String checkedPercentStr
- = df.format(BigDecimal.valueOf(checkedPercent).multiply(BigDecimal.valueOf(100))) + "%";
- item.setCheckedPercent(checkedPercent);
- item.setCheckedPercentStr(checkedPercentStr);
- }
- //带病案首页的病历数
- Integer homePageMRNum = records
- .stream()
- .map(HomePageImproveDTO::getHomePageMRNum)
- .reduce(0, Integer::sum);
- item.setHomePageMRNum(homePageMRNum);
- if (homePageMRNum == null || homePageMRNum.equals(0)) {
- return item;
- }
- //改善病历数
- Integer improveNum = records
- .stream()
- .map(HomePageImproveDTO::getImproveNum)
- .reduce(0, Integer::sum);
- //改善率
- Double improvePercent = BigDecimal.valueOf(improveNum)
- .divide(BigDecimal.valueOf(homePageMRNum), 4, RoundingMode.HALF_UP)
- .doubleValue();
- String improvePercentStr
- = df.format(BigDecimal.valueOf(improvePercent).multiply(BigDecimal.valueOf(100))) + "%";
- //改善至合格病历数
- Integer improveToPassNum = records
- .stream()
- .map(HomePageImproveDTO::getImproveToPassNum)
- .reduce(0, Integer::sum);
- //改善至合格占比
- Double improveToPassPercent = BigDecimal.valueOf(improveToPassNum)
- .divide(BigDecimal.valueOf(homePageMRNum), 4, RoundingMode.HALF_UP)
- .doubleValue();
- String improveToPassPercentStr
- = df.format(BigDecimal.valueOf(improveToPassPercent).multiply(BigDecimal.valueOf(100))) + "%";
- //改善至满分病历数
- Integer improveToFullNum = records
- .stream()
- .map(HomePageImproveDTO::getImproveToFullNum)
- .reduce(0, Integer::sum);
- //改善至满分占比
- Double improveToFullPercent = BigDecimal.valueOf(improveToFullNum)
- .divide(BigDecimal.valueOf(homePageMRNum), 4, RoundingMode.HALF_UP)
- .doubleValue();
- String improveToFullPercentStr
- = df.format(BigDecimal.valueOf(improveToFullPercent).multiply(BigDecimal.valueOf(100))) + "%";
- item.setImproveNum(improveNum);
- item.setImprovePercent(improvePercent);
- item.setImprovePercentStr(improvePercentStr);
- item.setImproveToPassNum(improveToPassNum);
- item.setImproveToPassPercent(improveToPassPercent);
- item.setImproveToPassPercentStr(improveToPassPercentStr);
- item.setImproveToFullNum(improveToFullNum);
- item.setImproveToFullPercent(improveToFullPercent);
- item.setImproveToFullPercentStr(improveToFullPercentStr);
- return item;
- }
- /**
- * 未整改病历统计
- *
- * @param filterUnModifyMRVO
- * @return
- */
- public UnModifyMRDTO unModifyMRStatistics(FilterUnModifyMRVO filterUnModifyMRVO) {
- UnModifyMRDTO unModifyMRDTO = new UnModifyMRDTO();
- List<Object> retList = Lists.newLinkedList();
- filterFacade.filterUnModifyMRVOSet(filterUnModifyMRVO);
- //colums
- QueryWrapper<SysHospitalSet> hospitalSetQueryWrapper = new QueryWrapper<>();
- hospitalSetQueryWrapper.eq("is_deleted", 'N')
- .eq("hospital_id", filterUnModifyMRVO.getHospitalId())
- .eq("code", "unmodify_mr_entry");
- SysHospitalSet hospitalSet = sysHospitalSetFacade.getOne(hospitalSetQueryWrapper);
- if (hospitalSet == null || StringUtil.isBlank(hospitalSet.getValue())) {
- return unModifyMRDTO;
- }
- //表头生成
- List<String> columnSet = Arrays.asList(hospitalSet.getValue().split(","));
- List<ColumnDTO> columns = Lists.newLinkedList();
- Integer orderNo = 1;
- ColumnDTO columnDeptId = new ColumnDTO();
- columnDeptId.setOrderNo(orderNo);
- columnDeptId.setFieldName("deptId");
- columnDeptId.setColumnName("科室编码");
- columnDeptId.setIsShow(0);
- columns.add(columnDeptId);
- orderNo++;
- ColumnDTO columnDeptName = new ColumnDTO();
- columnDeptName.setOrderNo(orderNo);
- columnDeptName.setFieldName("deptName");
- columnDeptName.setColumnName("科室名称");
- columnDeptName.setIsShow(1);
- columns.add(columnDeptName);
- orderNo++;
- List<Long> casesEntryIds = Lists.newArrayList();
- for (String valueStr : columnSet) {
- if (StringUtil.isBlank(valueStr)) {
- continue;
- }
- String[] keyValue = valueStr.split("--");
- if (keyValue != null || keyValue.length > 1) {
- casesEntryIds.add(Long.valueOf(keyValue[0]));
- ColumnDTO columnId = new ColumnDTO();
- columnId.setOrderNo(orderNo);
- columnId.setId(Long.valueOf(keyValue[0]));
- columnId.setFieldName("entry_" + keyValue[0] + "_id");
- columnId.setColumnName(keyValue[1] + "id");
- columnId.setIsShow(0);
- columns.add(columnId);
- orderNo++;
- ColumnDTO columnName = new ColumnDTO();
- columnName.setOrderNo(orderNo);
- columnName.setId(Long.valueOf(keyValue[0]));
- columnName.setFieldName("entry_" + keyValue[0] + "_name");
- columnName.setColumnName(keyValue[1] + "name");
- columnName.setIsShow(0);
- columns.add(columnName);
- orderNo++;
- ColumnDTO columnNum = new ColumnDTO();
- columnNum.setOrderNo(orderNo);
- columnNum.setId(Long.valueOf(keyValue[0]));
- columnNum.setFieldName("entry_" + keyValue[0] + "_num");
- columnNum.setColumnName(keyValue[1]);
- columnNum.setIsShow(1);
- columns.add(columnNum);
- orderNo++;
- }
- }
- //条目未维护
- if (ListUtil.isEmpty(casesEntryIds)) {
- return unModifyMRDTO;
- }
- //casesEntryIds
- filterUnModifyMRVO.setCasesEntryIds(casesEntryIds);
- QueryWrapper<QcCasesEntry> qcCasesEntryQueryWrapper = new QueryWrapper<>();
- qcCasesEntryQueryWrapper.eq("is_deleted", "N")
- .in("id", casesEntryIds);
- List<QcCasesEntry> casesEntryList = qcCasesEntryFacade.list(qcCasesEntryQueryWrapper);
- // 实体类中将实体类转化为map形式,其中条目id对应目标条目名称
- Map<Long, String> basCasesEntryMap = EntityUtil.makeMapWithKeyValue(casesEntryList, "id", "name");
- List<UnModifyMRDetailDTO> records = behospitalInfoFacade.unModifyMRStatistics(filterUnModifyMRVO);
- //以科室分组,将符合科室的每条数据以map形式存储
- Map<String, List<UnModifyMRDetailDTO>> deptMap = EntityUtil.makeEntityListMap(records, "deptName");
- //科室对应科室id
- Map<String, String> deptInfoMap = EntityUtil.makeMapWithKeyValue(records, "deptName", "deptId");
- Map<String, Map<Long, UnModifyMRDetailDTO>> deptEntryMap = new LinkedHashMap<>();
- for (Map.Entry<String, List<UnModifyMRDetailDTO>> entry : deptMap.entrySet()) {
- Map<Long, UnModifyMRDetailDTO> entryMap = EntityUtil.makeEntityMap(entry.getValue(), "casesEntryId");
- deptEntryMap.put(entry.getKey(), entryMap);
- }
- try {
- for (Map.Entry<String, Map<Long, UnModifyMRDetailDTO>> entry : deptEntryMap.entrySet()) {
- Object obj = new Object();
- HashMap addMap = new HashMap();
- HashMap addValMap = new HashMap();
- addMap.put("deptName", Class.forName("java.lang.String"));
- addValMap.put("deptName", entry.getKey());
- addMap.put("deptId", Class.forName("java.lang.String"));
- addValMap.put("deptId", deptInfoMap.get(entry.getKey()));
- for (ColumnDTO item : columns) {
- if (item.getFieldName().lastIndexOf("_id") > 0) {
- addMap.put(item.getFieldName(), Class.forName("java.lang.Long"));
- if (item.getId() != null) {
- addValMap.put(item.getFieldName(), item.getId());
- } else {
- addValMap.put(item.getFieldName(), null);
- }
- } else if (item.getFieldName().lastIndexOf("_name") > 0) {
- addMap.put(item.getFieldName(), Class.forName("java.lang.String"));
- if (basCasesEntryMap.containsKey(item.getId())) {
- addValMap.put(item.getFieldName(), basCasesEntryMap.get(item.getId()));
- } else {
- addValMap.put(item.getFieldName(), "");
- }
- } else if (item.getFieldName().lastIndexOf("_num") > 0) {
- addMap.put(item.getFieldName(), Class.forName("java.lang.Integer"));
- if (entry.getValue().containsKey(item.getId())) {
- addValMap.put(item.getFieldName(), entry.getValue().get(item.getId()).getCasesEntryNum());
- } else {
- addValMap.put(item.getFieldName(), 0);
- }
- }
- }
- obj = new ClassUtil().dynamicClass(obj, addMap, addValMap);
- retList.add(obj);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- //排序
- Collections.sort(retList, new Comparator<Object>() {
- @Override
- public int compare(Object o1, Object o2) {
- if (StringUtil.isNotBlank(filterUnModifyMRVO.getAsc())) {
- //升序
- Object o1Val = ObjectUtil.getValueByKey(o1, filterUnModifyMRVO.getAsc());
- Object o2Val = ObjectUtil.getValueByKey(o2, filterUnModifyMRVO.getAsc());
- if (filterUnModifyMRVO.getAsc().lastIndexOf("_num") > 1) {
- return ((Integer) o1Val).compareTo((Integer) o2Val);
- }
- if (filterUnModifyMRVO.getAsc().lastIndexOf("_id") > 1) {
- return ((Long) o1Val).compareTo((Long) o2Val);
- } else {
- return ((String) o1Val).compareTo((String) o2Val);
- }
- } else if (StringUtil.isNotBlank(filterUnModifyMRVO.getDesc())) {
- //降序
- Object o1Val = ObjectUtil.getValueByKey(o1, filterUnModifyMRVO.getDesc());
- Object o2Val = ObjectUtil.getValueByKey(o2, filterUnModifyMRVO.getDesc());
- if (filterUnModifyMRVO.getDesc().lastIndexOf("_num") > 1) {
- return ((Integer) o2Val).compareTo((Integer) o1Val);
- }
- if (filterUnModifyMRVO.getDesc().lastIndexOf("_id") > 1) {
- return ((Long) o2Val).compareTo((Long) o1Val);
- } else {
- return ((String) o2Val).compareTo((String) o1Val);
- }
- } else {
- return 0;
- }
- }
- });
- //增加全院数据
- if (ListUtil.isNotEmpty(retList) &&
- (StringUtil.isBlank(filterUnModifyMRVO.getName())
- || filterUnModifyMRVO.getName().equals("全院"))) {
- try {
- Object globleObj = new Object();
- HashMap addMap = new HashMap();
- HashMap addValMap = new HashMap();
- addMap.put("deptId", Class.forName("java.lang.String"));
- addValMap.put("deptId", "");
- addMap.put("deptName", Class.forName("java.lang.String"));
- addValMap.put("deptName", "全院");
- for (ColumnDTO item : columns) {
- if (item.getFieldName().lastIndexOf("_id") > 0) {
- addMap.put(item.getFieldName(), Class.forName("java.lang.Long"));
- if (item.getId() != null) {
- addValMap.put(item.getFieldName(), item.getId());
- } else {
- addValMap.put(item.getFieldName(), null);
- }
- } else if (item.getFieldName().lastIndexOf("_name") > 0) {
- addMap.put(item.getFieldName(), Class.forName("java.lang.String"));
- if (basCasesEntryMap.containsKey(item.getId())) {
- addValMap.put(item.getFieldName(), basCasesEntryMap.get(item.getId()));
- } else {
- addValMap.put(item.getFieldName(), "");
- }
- } else if (item.getFieldName().lastIndexOf("_num") > 0) {
- addMap.put(item.getFieldName(), Class.forName("java.lang.Integer"));
- Integer entryNum = retList
- .stream()
- .map(i -> ObjectUtil.getValueByKey(i, item.getFieldName()))
- .filter(i -> i != null)
- .map(i -> (Integer) i)
- .reduce(0, Integer::sum);
- addValMap.put(item.getFieldName(), entryNum);
- }
- }
- globleObj = new ClassUtil().dynamicClass(globleObj, addMap, addValMap);
- retList.add(0, globleObj);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- unModifyMRDTO.setColumns(columns);
- unModifyMRDTO.setData(retList);
- return unModifyMRDTO;
- }
- /**
- * 未整改病历质控评分页(内页)
- *
- * @param qcResultShortPageVO
- * @return
- */
- public IPage<QcResultShortDTO> unModifyMRPage(QcResultShortPageVO qcResultShortPageVO) {
- filterFacade.qcResultShortPageVOSet(qcResultShortPageVO);
- return behospitalInfoFacade.unModifyMRPage(qcResultShortPageVO);
- }
- /**
- * 不合格数病历号(内页)
- *
- * @param qcResultShortPageVO
- * @return
- */
- public IPage<QcResultShortDTO> badLevelPage(QcResultShortPageVO qcResultShortPageVO) {
- filterFacade.badLevelPageVOSet(qcResultShortPageVO);
- return behospitalInfoFacade.badLevelPage(qcResultShortPageVO);
- }
- /**
- * 31天再入院详情页
- *
- * @param reBeHosPageVO
- * @return
- */
- public IPage<ReBeHosDTO> reHos31DaysPage(ReBeHosPageVO reBeHosPageVO) {
- filterFacade.reBeHosPageVOSet(reBeHosPageVO);
- IPage<ReBeHosMergeDTO> page = behospitalInfoFacade.reHos31DaysPage(reBeHosPageVO);
- List<ReBeHosMergeDTO> records = page.getRecords();
- IPage<ReBeHosDTO> retPage = new Page<>();
- BeanUtil.copyProperties(page, retPage);
- List<ReBeHosDTO> retRecords = Lists.newLinkedList();
- if (ListUtil.isNotEmpty(records)) {
- for (ReBeHosMergeDTO record : records) {
- ReBeHosDTO retRecord = new ReBeHosDTO();
- BeanUtil.copyProperties(record, retRecord);
- List<ReBeHosDetailDTO> details = Lists.newLinkedList();
- ReBeHosDetailDTO detailRecord = new ReBeHosDetailDTO();
- BeanUtil.copyProperties(record, detailRecord);
- details.add(detailRecord);
- ReBeHosDetailDTO lastDetailRecord = new ReBeHosDetailDTO();
- lastDetailRecord.setName(record.getName());
- lastDetailRecord.setBehDeptId(record.getLastBehDeptId());
- lastDetailRecord.setBehDeptName(record.getBehDeptName());
- lastDetailRecord.setBehospitalCode(record.getLastBehospitalCode());
- lastDetailRecord.setBehospitalDate(record.getLastBehospitalDate());
- lastDetailRecord.setLeaveHospitalDate(record.getLastLeaveHospitalDate());
- lastDetailRecord.setLevel(record.getLastLevel());
- lastDetailRecord.setScoreRes(record.getLastScoreRes());
- lastDetailRecord.setBehospitalDayNum(record.getLastBehospitalDayNum());
- lastDetailRecord.setTotleFee(record.getLastTotleFee());
- details.add(lastDetailRecord);
- retRecord.setDetails(details);
- retRecords.add(retRecord);
- }
- }
- retPage.setRecords(retRecords);
- return retPage;
- }
- /**
- * 入院人数统计(首页)
- *
- * @param filterVO
- * @return
- */
- public List<NumDTO> beHosCount(FilterVO filterVO) {
- filterFacade.filterVOSet(filterVO);
- List<NumDTO> records = behospitalInfoFacade.beHosCount(filterVO);
- if (ListUtil.isNotEmpty(records)) {
- NumDTO globleRecord = new NumDTO();
- globleRecord.setName("全院");
- Integer num = records.stream()
- .map(NumDTO::getNum)
- .reduce(0, Integer::sum);
- globleRecord.setNum(num);
- records.add(0, globleRecord);
- }
- if (ListUtil.isNotEmpty(records) && records.size() > filterVO.getLimitCount()) {
- records = records.subList(0, 10);
- }
- return records;
- }
- /**
- * 单条条目缺陷统计(首页)
- *
- * @param filterVO
- * @return
- */
- public List<NumDTO> casesEntryStatisticsById(FilterVO filterVO) {
- filterFacade.filterVOSet(filterVO);
- List<NumDTO> records = behospitalInfoFacade.casesEntryStatisticsById(filterVO);
- if (ListUtil.isNotEmpty(records)) {
- NumDTO globleRecord = new NumDTO();
- globleRecord.setName("全院");
- Integer num = records.stream()
- .map(NumDTO::getNum)
- .reduce(0, Integer::sum);
- globleRecord.setNum(num);
- records.add(0, globleRecord);
- }
- if (ListUtil.isNotEmpty(records) && records.size() > filterVO.getLimitCount()) {
- records = records.subList(0, 10);
- }
- return records;
- }
- /**
- * 病案首页改善率质控评分页(内页)
- *
- * @param qcResultShortPageVO
- * @return
- */
- public IPage<QcResultShortDTO> hmImproveMRPage(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
- filterFacade.qcResultShortPageVOSet(qcResultShortPageVO);
- return behospitalInfoFacade.hmImproveMRPage(qcResultShortPageVO);
- }
- /**
- * 质控核查质控评分页(内页)
- *
- * @param qcResultShortPageVO
- * @return
- */
- public IPage<QcResultShortDTO> qcCheckMRPage(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
- filterFacade.qcResultShortPageVOSet(qcResultShortPageVO);
- return behospitalInfoFacade.qcCheckMRPage(qcResultShortPageVO);
- }
- /*
- */
- /**
- * 病历稽查表导出(首页)
- *
- * @param filterVO
- * @return
- */
- public List<MedicalCheckExportDTO> medicalCheckExport(@Param("filterVO") FilterMedicalCheckVO filterVO) {
- filterFacade.getMedicalCheckVOSet(filterVO);
- List<MedicalCheckExportDTO> medicalCheck = behospitalInfoFacade.getMedicalCheckExport(filterVO);
- return medicalCheck;
- }
- /**
- * 病历稽查表(首页)
- *
- * @param filterVO
- * @return
- */
- public IPage<MedicalCheckDTO> getMedicalCheck(@Param("filterVO") FilterMedicalCheckVO filterVO) {
- filterFacade.getMedicalCheckVOSet(filterVO);
- IPage<MedicalCheckDTO> medicalCheck = behospitalInfoFacade.getMedicalCheck(filterVO);
- return medicalCheck;
- }
- /**
- * 病历稽查表(title)
- *
- * @param
- * @return
- */
- public List<ColumnDTO> getMedicalCheckTitle() {
- //病历稽查入参拼接
- String hospitalId = SysUserUtils.getCurrentHospitalID();
- //colums
- QueryWrapper<SysHospitalSet> hospitalSetQueryWrapper = new QueryWrapper<>();
- hospitalSetQueryWrapper.eq("is_deleted", 'N')
- .eq("hospital_id", hospitalId)
- .eq("code", "medical_check_form");
- List<ColumnDTO> columns = Lists.newLinkedList();
- SysHospitalSet hospitalSet = sysHospitalSetFacade.getOne(hospitalSetQueryWrapper);
- if (hospitalSet == null || StringUtil.isBlank(hospitalSet.getValue())) {
- return columns;
- }
- //表头生成
- List<String> columnSet = Arrays.asList(hospitalSet.getValue().split(","));
- Integer orderNo = 1;
- ColumnDTO columnDeptId = new ColumnDTO();
- columnDeptId.setOrderNo(orderNo);
- columnDeptId.setFieldName("deptId");
- columnDeptId.setColumnName("科室编码");
- columnDeptId.setIsShow(0);
- columns.add(columnDeptId);
- orderNo++;
- ColumnDTO columnDeptName = new ColumnDTO();
- columnDeptName.setOrderNo(orderNo);
- columnDeptName.setFieldName("deptName");
- columnDeptName.setColumnName("科室");
- columnDeptName.setIsShow(1);
- columns.add(columnDeptName);
- orderNo++;
- ColumnDTO columnMedicalName = new ColumnDTO();
- columnMedicalName.setOrderNo(orderNo);
- columnMedicalName.setFieldName("medicalName");
- columnMedicalName.setColumnName("医疗组");
- columnMedicalName.setIsShow(1);
- columns.add(columnMedicalName);
- orderNo++;
- for (String valueStr : columnSet) {
- String[] keyValue = valueStr.split("--");
- if (keyValue != null || keyValue.length > 1) {
- ColumnDTO columnNum = new ColumnDTO();
- columnNum.setOrderNo(orderNo);
- columnNum.setId(Long.valueOf(keyValue[0]));
- columnNum.setFieldName("entry_" + keyValue[0] + "_num");
- columnNum.setColumnName(keyValue[1]);
- columnNum.setIsShow(1);
- columns.add(columnNum);
- orderNo++;
- }
- }
- return columns;
- }
- }
|