package com.ltkj.web.controller.pacs;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.util.RandomUtil;
|
import cn.hutool.json.JSONArray;
|
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.ltkj.common.core.domain.AjaxResult;
|
import com.ltkj.common.utils.AgeResult;
|
import com.ltkj.common.utils.DateUtils;
|
import com.ltkj.hosp.domain.*;
|
import com.ltkj.hosp.hisDto.OutpintestapplyDetailsDto;
|
import com.ltkj.hosp.pacsDto.SavePacsApply;
|
import com.ltkj.hosp.service.*;
|
import com.ltkj.system.service.ISysDeptService;
|
import com.ltkj.web.controller.his.HisApiGetMethodService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.time.DateFormatUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.math.BigDecimal;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* @Company: 西安路泰科技有限公司
|
* @Author: zhaowenxuan
|
* @Date: 2024/9/18 10:55
|
*/
|
@Slf4j
|
@Component
|
public class PacsApiMethodService {
|
@Autowired
|
private HisApiGetMethodService getMethodService;
|
@Autowired
|
private ISysDeptService deptService;
|
@Autowired
|
private ITjProjectService projectService;
|
@Autowired
|
private LtkjJfzhglmxjfxmzdService ltkjJfzhglmxjfxmzdService;
|
@Autowired
|
private LtkjMxjfxmzdService ltkjMxjfxmzdService;
|
@Autowired
|
private LtkjEjjfxmzdService ltkjEjjfxmzdService;
|
@Autowired
|
private LtkjJianchajianyanTreeService ltkjJianchajianyanTreeService;
|
|
|
/**
|
* pas 检查申请信息保存
|
* @param savePacsApply
|
* @return
|
*/
|
private AjaxResult savePacsApply(SavePacsApply savePacsApply){
|
Map<String, Object> map = BeanUtil.beanToMap(savePacsApply);
|
return getMethodService.getPacsData("savePacsApply", map);
|
}
|
|
/**
|
* pas 结果获取
|
* @param regNo 检查申请单号
|
* @return
|
*/
|
public AjaxResult getPacsReport(String regNo){
|
HashMap<String, Object> hashMap = new HashMap<>();
|
hashMap.put("regNo", regNo);
|
return getMethodService.getPacsData("getPacsReport",hashMap);
|
}
|
|
/**
|
* pas 检查申请信息作废
|
* @param regNo 检查申请单号
|
* @param examNo 体检号
|
* @param name 病人姓名
|
* @return
|
*/
|
public AjaxResult updatePacsApply(String regNo,String examNo,String name){
|
HashMap<String, Object> hashMap = new HashMap<>();
|
hashMap.put("regNo", regNo);
|
hashMap.put("examNo", examNo);
|
hashMap.put("name", name);
|
log.info("作废检查 ->{}",JSONUtil.toJsonStr(hashMap));
|
return getMethodService.getPacsData("updatePacsApply",hashMap);
|
}
|
|
public Boolean save(TjOrder tjOrder, TjCustomer tjCustomer,List<TbTransition> detailList) {
|
JSONArray array = JSONUtil.createArray();
|
try {
|
if (detailList != null && !detailList.isEmpty()) {
|
LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
|
wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
|
wq.in(TjProject::getDeptId,deptService.getJcDeptIds());
|
List<TjProject> projects = projectService.list(wq);
|
ArrayList<SavePacsApply> errorPacsList = new ArrayList<>();
|
ArrayList<SavePacsApply> successPacsList = new ArrayList<>();
|
int allTotal = 0;
|
if (projects != null && !projects.isEmpty()){
|
for (TjProject project : projects) {
|
if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
|
if (null != project.getHisXmbm()) {
|
SavePacsApply savePacsApply = new SavePacsApply();
|
savePacsApply.setExamNo(tjOrder.getCardId());
|
savePacsApply.setName(tjCustomer.getCusName());
|
savePacsApply.setSex(tjCustomer.getCusSex()==1?"2":"1");
|
AgeResult ageResult = DateUtils.calculateAge(tjCustomer.getCusBrithday());
|
savePacsApply.setAge(String.valueOf(ageResult.getAge()));
|
savePacsApply.setAgeUnit(String.valueOf(ageResult.getUnit()));
|
savePacsApply.setBirthday(DateFormatUtils.format(tjCustomer.getCusBrithday(), "yyyy-MM-dd"));
|
savePacsApply.setCardNumber(tjCustomer.getCusIdcard());
|
savePacsApply.setTel(tjCustomer.getCusPhone());
|
Date date = new Date();
|
String regNo = "jk_"+DateFormatUtils.format(date, "yyyyMMddHHmmss") +"_"+project.getHisXmbm();
|
savePacsApply.setRegNo(regNo);
|
JSONObject jsonObject = JSONUtil.createObj();
|
jsonObject.putOpt("cardId",tjOrder.getCardId());
|
jsonObject.putOpt("regNo",regNo);
|
jsonObject.putOpt("name",tjCustomer.getCusName());
|
array.add(jsonObject);
|
savePacsApply.setCheckItemID(project.getHisXmbm());
|
savePacsApply.setCheckItem(project.getHisXmmc());
|
// TODO 检查部位
|
savePacsApply.setCheckPosition("");
|
savePacsApply.setAmount(project.getProPrice());
|
savePacsApply.setApplyDate(DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss"));
|
savePacsApply.setApplyDepment("0101");
|
savePacsApply.setApplyDepmentName("体检中心");
|
savePacsApply.setApplyDoctor("00029");
|
savePacsApply.setApplyDoctorName("王健萍");
|
savePacsApply.setExecDepment("0101");
|
savePacsApply.setExecDepmentName("体检中心");
|
savePacsApply.setCreateTime(savePacsApply.getApplyDate());
|
// TODO 检查设备
|
savePacsApply.setDevice("");
|
// TODO 检查设备类型
|
savePacsApply.setDeviceType("");
|
log.info("检查申请 ->{}",JSONUtil.toJsonStr(savePacsApply));
|
AjaxResult ajaxResult = savePacsApply(savePacsApply);
|
String result = ajaxResult.get("data").toString();
|
JSONObject object = JSONUtil.parseObj(JSONUtil.parseObj(result).getStr("Response"));
|
log.info("请求返回 ->{}",object);
|
String code = object.getStr("ResultCode");
|
allTotal++;
|
if(code.equals("0")){
|
successPacsList.add(savePacsApply);
|
LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
|
tree.setCardId(tjOrder.getCardId());
|
tree.setPationid(tjCustomer.getPationId());
|
tree.setSqdh(regNo);
|
tree.setFyhj(String.valueOf(project.getProPrice()));
|
tree.setHisXmdm(project.getHisXmbm());
|
tree.setType("检查");
|
tree.setTjPrice(String.valueOf(project.getProPrice()));
|
LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
|
if (project.getSfzhfy().equals("Y"))
|
wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, project.getHisXmbm());
|
else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, project.getHisXmbm());
|
List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
|
if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
|
String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
|
LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
|
wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
|
LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
|
LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
|
wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
|
LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
|
tree.setXmfl(ejjfxmzd.getYjkmdm());
|
}
|
tree.setCreateTime(DateUtil.date());
|
ltkjJianchajianyanTreeService.save(tree);
|
}else {
|
errorPacsList.add(savePacsApply);
|
}
|
}
|
}
|
}
|
}
|
log.info("检查总计 ->{}个",allTotal);
|
if (!errorPacsList.isEmpty()){
|
log.info("成功 ->{}",successPacsList);
|
log.error("失败 ->{}",errorPacsList);
|
}
|
}
|
} catch (Exception e) {
|
log.error(e.getMessage());
|
for (Object object : array) {
|
JSONObject jsonObject = (JSONObject) object;
|
updatePacsApply(jsonObject.getStr("regNo"), jsonObject.getStr("cardId"),jsonObject.getStr("name"));
|
}
|
return false;
|
}
|
return true;
|
}
|
|
/* 查询检查结果、更新查询状态 */
|
// 调用返回检验结果:
|
// exec usp_tjjk_pacsjg ‘体检号’
|
// 调用更新状态:
|
// exec usp_tjjk_pacszt ‘体检号’
|
}
|