123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410 |
- package com.diagbot.facade.data;
- import com.alibaba.fastjson.JSON;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
- import com.diagbot.dto.AnalyzeRunDTO;
- import com.diagbot.dto.RespDTO;
- import com.diagbot.dto.data.AHomePageDTO;
- import com.diagbot.entity.HomePage;
- import com.diagbot.enums.IsDeleteEnum;
- import com.diagbot.enums.data.*;
- import com.diagbot.facade.BehospitalInfoFacade;
- import com.diagbot.service.impl.HomePageServiceImpl;
- import com.diagbot.util.*;
- import com.diagbot.vo.AnalyzeRunVO;
- import com.diagbot.vo.data.*;
- import com.google.common.collect.Lists;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.stereotype.Component;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- @Component
- public class AHomePageFacade extends HomePageServiceImpl{
- @Autowired
- @Qualifier("homePageServiceImpl")
- private HomePageServiceImpl homePageService;
- @Autowired
- private AHomeDiagnoseInfoFacade aHomeDiagnoseInfoFacade;
- @Autowired
- private AHomeOperationInfoFacade aHomeOperationInfoFacade;
- @Autowired
- private BehospitalInfoFacade behospitalInfoFacade;
- @Autowired
- private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
- @Autowired
- private ReadProperties readProperties;
- @Autowired
- private SqlProperties sqlProperties;
- private TZDBConn tzDBConn = new TZDBConn();
- /**
- * 同步前一天病案首页
- */
- public void executeHomePage() {
- //String sql="select * from br_rechome where cjcxrq>=dateadd(day,-2,getdate()) and cjcxrq<=getdate()";
- //同步前一天的数据
- //String sql="select * from br_rechome where cjcxrq>=(CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(CONVERT(varchar,GETDATE(),23))";
- //String sql = "select * from ai_v_sendhomepageing where behospitalcode in(select behospitalcode from AI_V_SENDPATIENTINFO where leavehospitaldate >=to_date('2020-10-01','yyyy-mm-dd') and leavehospitaldate<to_date('2020-11-22','yyyy-mm-dd'));";
- String sql = "select * from ai_v_sendhomepageing where behospitalcode in()";
- List<HomePage> homePageList = tzDBConn.getHomePage(sql);
- execute(homePageList);
- }
- /**
- * 运行质控-验证数据有效性
- * @param aHomePageIngVO
- * @return
- */
- public RespDTO<Map<String, Object>> executeHomePageIng(AHomePageIngVO aHomePageIngVO){
- try {
- if(aHomePageIngVO.getHomePages()!=null && aHomePageIngVO.getHomePages().size()>0){
- //验证数据有效性
- for (AHomePageVO aHomePageVO:aHomePageIngVO.getHomePages()) {
- if(StringUtil.isEmpty(aHomePageVO.getHomePageId())) {
- return RespDTO.onError("请输入病案首页编号!");
- }else if(aHomePageVO.getHospitalId()==null){
- return RespDTO.onError("请输入医院编码!");
- }else if(StringUtil.isEmpty(aHomePageVO.getBehospitalCode())){
- return RespDTO.onError("请输入病人住院编码!");
- }
- //出院诊断
- if(aHomePageVO.getLeaveDiags()!=null && aHomePageVO.getLeaveDiags().size()>0){
- for (AHomeDiagnoseVO aHomeDiagnoseVO:aHomePageVO.getLeaveDiags()){
- if(StringUtil.isEmpty(aHomeDiagnoseVO.getHomePageId())) {
- return RespDTO.onSuc("出院诊断未输入病案首页编号!");
- }else if(aHomeDiagnoseVO.getHospitalId()==null){
- return RespDTO.onSuc("出院诊断未输入医院编码!");
- }else if(StringUtil.isEmpty(aHomeDiagnoseVO.getDiagnoseOrderNo())){
- return RespDTO.onSuc("出院诊断未输入顺序号!");
- }
- }
- };
- //住院手术
- if(aHomePageVO.getOperations()!=null && aHomePageVO.getOperations().size()>0){
- for (AHomeOperationVO aHomeOperationVO:aHomePageVO.getOperations()){
- if(StringUtil.isEmpty(aHomeOperationVO.getHomePageId())) {
- return RespDTO.onSuc("住院手术未输入病案首页编号!");
- }else if(aHomeOperationVO.getHospitalId()==null){
- return RespDTO.onSuc("住院手术未输入医院编码!");
- }else if(StringUtil.isEmpty(aHomeOperationVO.getOperationOrderNo())){
- return RespDTO.onSuc("住院手术未输入顺序号!");
- }
- }
- }
- }
- //装载数据
- updateHomePageIng(aHomePageIngVO);
- //评分后返回结构体
- return homePageIng(aHomePageIngVO);
- }else{
- aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页","",JSON.toJSONString(aHomePageIngVO),"","未接收到数据!");
- return RespDTO.onError("未接收到数据!");
- }
- }catch (Exception e){
- aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页","",JSON.toJSONString(aHomePageIngVO),"",e.getMessage());
- if(e.getMessage().contains("该病历无关联的质控条目")){
- return RespDTO.onSuc(e.getMessage());
- }else {
- return RespDTO.onError(e.getMessage());
- }
- }
- }
- /**
- * 更新数据到数据库
- * @param aHomePageIngVO
- */
- private void updateHomePageIng(AHomePageIngVO aHomePageIngVO){
- try {
- List<HomePage> homePageList=Lists.newArrayList();
- aHomePageIngVO.getHomePages().stream().forEach(s->{
- //初始化入参
- HomePage homePage=new HomePage();
- BeanUtil.copyProperties(s,homePage);
- //if(StringUtil.isNotEmpty(s.getSex())){
- //性别,1:男,2:女
- //homePage.setSex(SexEnum.getName(s.getSex()));
- //}
- //if(StringUtil.isNotEmpty(s.getMarriage())){
- //婚姻,1:未婚,2:已婚,3:丧偶,4:离婚,9:其他
- //homePage.setMarriage(MarriageEnum.getName(s.getMarriage()));
- //}
- if(StringUtil.isNotEmpty(s.getIsMedAllergy())){
- //过敏史,1:无,2:有
- homePage.setIsMedAllergy(IsMedAllergyEnum.getName(s.getIsMedAllergy()));
- }
- if(StringUtil.isNotEmpty(s.getBehospitalWay())){
- //入院途径,1:急诊,2:门诊,3:其他医疗机构,9:其他
- homePage.setBehospitalWay(BehospitalWayEnum.getName(s.getBehospitalWay()));
- }
- if(StringUtil.isNotEmpty(s.getAutopsy())){
- //死亡患者尸检,1:是,2:否
- homePage.setAutopsy(AutopsyEnum.getName(s.getAutopsy()));
- }
- if(StringUtil.isNotEmpty(s.getBloodType())){
- //血型,1:A,2:B,3:O,4:AB,5:不详,6:未查
- homePage.setBloodType(BloodTypeEnum.getName(s.getBloodType()));
- }
- if(StringUtil.isNotEmpty(s.getRh())){
- //RH,1:阴,2:阳,3,不详,4,未查
- homePage.setRh(RHEnum.getName(s.getRh()));
- }
- if(StringUtil.isNotEmpty(s.getLeaveHospitalType())){
- //离院方式,1:医院离院,2:医嘱转院,3:医嘱转社区卫生服务机构/乡镇卫生院,4:非医嘱离院,5:死亡,9:其他
- homePage.setLeaveHospitalType(LeaveHospitalTypeEnum.getName(s.getLeaveHospitalType()));
- }
- if(StringUtil.isNotEmpty(s.getSingleDiagManage())){
- //单病种管理:1:有,2:无
- homePage.setSingleDiagManage(SingleDiagManageEnum.getName(s.getSingleDiagManage()));
- }
- if(StringUtil.isNotEmpty(s.getClinicPathwayManage())){
- //临床路径管理,1:完成,2:变异,3:退出,4:未入
- homePage.setClinicPathwayManage(ClinicPathwayManageEnum.getName(s.getClinicPathwayManage()));
- }
- if(StringUtil.isNotEmpty(s.getReturnToType())){
- //转归情况,1:治愈,2:好转,3:未愈,4:死亡,9:其他
- homePage.setReturnToType(ReturnToTypeEnum.getName(s.getReturnToType()));
- }
- if(StringUtil.isNotEmpty(s.getIsOutpatientBehospital())){
- homePage.setIsOutpatientBehospital(DiagnoseTypeEnum.getName(s.getIsOutpatientBehospital()));
- }
- if(StringUtil.isNotEmpty(s.getIsLeaveBehospital())){
- homePage.setIsLeaveBehospital(DiagnoseTypeEnum.getName(s.getIsLeaveBehospital()));
- }
- if(StringUtil.isNotEmpty(s.getIsOperationBeforeAfter())){
- homePage.setIsOperationBeforeAfter(DiagnoseTypeEnum.getName(s.getIsOperationBeforeAfter()));
- }
- if(StringUtil.isNotEmpty(s.getIsClinicPathology())){
- homePage.setIsClinicPathology(DiagnoseTypeEnum.getName(s.getIsClinicPathology()));
- }
- if(StringUtil.isNotEmpty(s.getIsRadiatePathology())){
- homePage.setIsRadiatePathology(DiagnoseTypeEnum.getName(s.getIsRadiatePathology()));
- }
- if(StringUtil.isNotEmpty(s.getAgainBehospitalPlan())){
- /**31天再住院计划*/
- homePage.setAgainBehospitalPlan(IsMedAllergyEnum.getName(s.getAgainBehospitalPlan()));
- }
- if(StringUtil.isNotEmpty(s.getHomePageQuality())){
- /**病案质量,1:甲,2:乙,3:丙*/
- homePage.setHomePageQuality(medicalRecordQualityEnum.getName(s.getHomePageQuality()));
- }
- if(StringUtil.isNotBlank(s.getBirthday())){
- homePage.setBirthday(DateUtil.parseDateTime(DateUtil.formatDateTime(DateUtil.parseDate(s.getBirthday(),"yyyy-MM-dd"))));
- }
- if(StringUtil.isNotBlank(s.getBehospitalDate())){
- homePage.setBehospitalDate(DateUtil.parseDateTime(DateUtil.formatDateTime(DateUtil.parseDate(s.getBehospitalDate(),"yyyy-MM-dd HH:mm"))));
- }
- if(StringUtil.isNotBlank(s.getLeaveHospitalDate())){
- homePage.setLeaveHospitalDate(DateUtil.parseDateTime(DateUtil.formatDateTime(DateUtil.parseDate(s.getLeaveHospitalDate(),"yyyy-MM-dd HH:mm"))));
- }
- if(StringUtil.isNotBlank(s.getQcDate())){
- homePage.setQcDate(DateUtil.parseDateTime(DateUtil.formatDateTime(DateUtil.parseDate(s.getQcDate(),"yyyy-MM-dd"))));
- }
- homePageList.add(homePage);
- //初始化诊断和手术,并同步到数据库
- aHomeDiagnoseInfoFacade.executeHomeDiagnose(s.getLeaveDiags());//首页诊断
- aHomeOperationInfoFacade.executeHomeOperation(s.getOperations());//首页手术
- });
- execute(homePageList);
- //aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页",JSON.toJSONString(aHomePageIngVO),"","操作成功!");
- }catch (Exception e){
- aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页","",JSON.toJSONString(aHomePageIngVO),"",e.getMessage());
- }
- }
- /**
- * 评分后返回结构体
- * @param aHomePageIngVO
- * @return
- */
- private RespDTO<Map<String, Object>> homePageIng(AHomePageIngVO aHomePageIngVO){
- try {
- String behospitalCode =aHomePageIngVO.getHomePages().get(0).getBehospitalCode();
- Long hospitalId=aHomePageIngVO.getHomePages().get(0).getHospitalId();
- Long modeId=Long.valueOf("6");//病案首页默认为6
- if(aHomePageIngVO.getDockModeType().equals("0")){
- Map<String,Object> map=new HashMap<String,Object>();
- List<AHomePageDTO> homePageDtoList=BeanUtil.listCopyTo(aHomePageIngVO.getHomePages(),AHomePageDTO.class);
- map.put("homePages",homePageDtoList);
- //aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页",JSON.toJSONString(aHomePageIngVO),JSON.toJSONString(RespDTO.onSuc(map)),"操作成功!");
- return RespDTO.onSuc(map);
- }else if(aHomePageIngVO.getDockModeType().equals("1")){
- //页面模式
- String url=readProperties.getProcessQcUrl()+"?behospitalCode="+behospitalCode+"&hospitalId="+hospitalId+"&modeId="+modeId;
- Map<String,Object> map=new HashMap<String,Object>();
- map.put("url",url);
- //aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页",JSON.toJSONString(aHomePageIngVO),JSON.toJSONString(RespDTO.onSuc(map)),"操作成功!");
- return RespDTO.onSuc(map);
- }else if(aHomePageIngVO.getDockModeType().equals("2")){
- AnalyzeRunVO analyzeRunVO=new AnalyzeRunVO();
- analyzeRunVO.setBehospitalCode(behospitalCode);
- analyzeRunVO.setHospitalId(hospitalId);
- analyzeRunVO.setModeId(modeId);
- AnalyzeRunDTO analyzeRunDTO=behospitalInfoFacade.analyzeRun(analyzeRunVO);
- Map<String,Object> map=new HashMap<String,Object>();
- if(analyzeRunDTO.getMsgDTOList().size()>0){
- map.put("analyze",analyzeRunDTO.getMsgDTOList());
- }
- //aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页",JSON.toJSONString(aHomePageIngVO),JSON.toJSONString(RespDTO.onSuc(map)),"操作成功!");
- return RespDTO.onSuc(map);
- }else{
- //页面模式+接口引擎模式
- String url=readProperties.getProcessQcUrl()+"?behospitalCode="+behospitalCode+"&hospitalId="+hospitalId+"&modeId="+modeId;
- AnalyzeRunVO analyzeRunVO=new AnalyzeRunVO();
- analyzeRunVO.setBehospitalCode(behospitalCode);
- analyzeRunVO.setHospitalId(hospitalId);
- analyzeRunVO.setModeId(modeId);
- AnalyzeRunDTO analyzeRunDTO=behospitalInfoFacade.analyzeRun(analyzeRunVO);
- Map<String,Object> map=new HashMap<String,Object>();
- if(analyzeRunDTO.getMsgDTOList().size()>0){
- map.put("url",url);
- map.put("analyze",analyzeRunDTO.getMsgDTOList());
- }
- //aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页",JSON.toJSONString(aHomePageIngVO),JSON.toJSONString(RespDTO.onSuc(map)),"操作成功!");
- return RespDTO.onSuc(map);
- }
- }catch (Exception e){
- aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页","",JSON.toJSONString(aHomePageIngVO),"",e.getMessage());
- if(e.getMessage().contains("该病历无关联的质控条目")){
- return RespDTO.onSuc(e.getMessage());
- }else {
- return RespDTO.onError(e.getMessage());
- }
- }
- }
- /**
- * 终末质控-通过接口更新病案首页
- * @param list
- * @return
- */
- public RespDTO<List<AHomePageDTO>> executeHomePage(List<AHomePageVO> list) {
- try {
- if(list!=null && list.size()>0){
- //循环验证数据有效性
- for (AHomePageVO aHomePageVO:list) {
- if(StringUtil.isEmpty(aHomePageVO.getHomePageId())) {
- return RespDTO.onError("请输入病案首页编号!");
- }else if(aHomePageVO.getHospitalId()==null){
- return RespDTO.onError("请输入医院编码!");
- }else if(StringUtil.isEmpty(aHomePageVO.getBehospitalCode())){
- return RespDTO.onError("请输入病人住院编码!");
- }
- }
- //装载数据
- List<HomePage> homePageList=Lists.newArrayList();
- list.stream().forEach(s->{
- //初始化入参
- HomePage homePage=new HomePage();
- BeanUtil.copyProperties(s,homePage);
- if(StringUtil.isNotBlank(s.getBirthday())){
- homePage.setBirthday(DateUtil.parseDateTime(DateUtil.formatDateTime(DateUtil.parseDate(s.getBirthday(),"yyyy/MM/dd"))));
- }
- if(StringUtil.isNotBlank(s.getBehospitalDate())){
- homePage.setBehospitalDate(DateUtil.parseDateTime(DateUtil.formatDateTime(DateUtil.parseDate(s.getBehospitalDate(),"yyyy/MM/dd HH:mm"))));
- }
- if(StringUtil.isNotBlank(s.getLeaveHospitalDate())){
- homePage.setLeaveHospitalDate(DateUtil.parseDateTime(DateUtil.formatDateTime(DateUtil.parseDate(s.getLeaveHospitalDate(),"yyyy/MM/dd HH:mm"))));
- }
- if(StringUtil.isNotBlank(s.getQcDate())){
- homePage.setQcDate(DateUtil.parseDateTime(DateUtil.formatDateTime(DateUtil.parseDate(s.getQcDate(),"yyyy/MM/dd"))));
- }
- homePageList.add(homePage);
- });
- execute(homePageList);
- List<AHomePageDTO> homePageDtoList=BeanUtil.listCopyTo(list,AHomePageDTO.class);
- return RespDTO.onSuc(homePageDtoList);
- }else{
- aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页","",JSON.toJSONString(list),"","未接收到数据!");
- return RespDTO.onError("未接收到数据!");
- }
- }catch (Exception e){
- aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页","",JSON.toJSONString(list),"",e.getMessage());
- return RespDTO.onError(e.getMessage());
- }
- }
- /**
- * 病案首页
- * @param homePageList
- */
- public void execute(List<HomePage> homePageList){
- try {
- List<HomePage> addE = Lists.newLinkedList();
- List<HomePage> updateE = Lists.newLinkedList();
- if (homePageList != null && homePageList.size() > 0) {
- homePageList.stream().forEach(s -> {
- HomePage homePage = this.getOne(new QueryWrapper<HomePage>()
- .eq("home_page_id", s.getHomePageId())
- .eq("hospital_id", s.getHospitalId())
- .eq("behospital_code", s.getBehospitalCode()), false);
- if (homePage != null) {
- if(homePage.getIsDeleted().equals("Y")){
- s.setIsDeleted("N");
- }
- s.setGmtModified(new Date());
- updateE.add(s);
- } else {
- s.setGmtCreate(new Date());
- addE.add(s);
- }
- });
- }
- if(addE.size()>0){
- homePageService.saveBatch(addE);
- }
- if(updateE.size()>0){
- homePageService.updateBatchByKey(updateE);
- }
- //aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页",JSON.toJSONString(homePageList),"","操作成功!");
- }catch (Exception e){
- aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页","",JSON.toJSONString(homePageList),"",e.getMessage());
- }
- }
- public RespDTO deleteFlag(ADeleteFlagVO aDeleteFlagVO){
- try {
- //验证数据是否存在
- if(StringUtil.isEmpty(aDeleteFlagVO.getHomePageId())) {
- return RespDTO.onError("请输入病案首页编号!");
- }else if(aDeleteFlagVO.getHospitalId()==null){
- return RespDTO.onError("请输入医院编码!");
- }else if(StringUtil.isEmpty(aDeleteFlagVO.getBehospitalCode())){
- return RespDTO.onError("请输入病人住院编码!");
- }else {
- UpdateWrapper<HomePage> updateWrapper=new UpdateWrapper<>();
- updateWrapper.eq("home_page_id", aDeleteFlagVO.getHomePageId())
- .eq("hospital_id", aDeleteFlagVO.getHospitalId())
- .eq("behospital_code", aDeleteFlagVO.getBehospitalCode())
- .eq("is_deleted",IsDeleteEnum.N)
- .set("is_deleted",IsDeleteEnum.Y)
- .set("gmt_modified", DateUtil.now());
- Boolean flag=update(new HomePage(),updateWrapper);
- //aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页-删除",JSON.toJSONString(aDeleteFlagVO),JSON.toJSONString(RespDTO.onSuc(flag)),"操作成功!");
- return RespDTO.onSuc(flag);
- }
- }catch (Exception e){
- aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页-删除",aDeleteFlagVO.getRecId(), JSON.toJSONString(aDeleteFlagVO),"",e.getMessage());
- return RespDTO.onError(e.getMessage());
- }
- }
- }
|