package com.ltkj.web.controller.his;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.date.DateUtil;
|
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.SecurityUtils;
|
import com.ltkj.hosp.domain.*;
|
import com.ltkj.hosp.hisDto.*;
|
import com.ltkj.hosp.service.*;
|
import com.ltkj.system.service.ISysConfigService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
/* @Authot:zjh
|
* @Date: 2024-05-30
|
* */
|
|
@Component
|
public class HisApiMethod {
|
@Autowired
|
private HisApiMethodService controller;
|
@Resource
|
private ITjOrderService orderService;
|
@Autowired
|
private ITjCustomerService customerService;
|
@Resource
|
private ITjOrderDetailService detailService;
|
@Resource
|
private ITjProjectService projectService;
|
@Resource
|
private ITbTransitionService tbTransitionService;
|
@Autowired
|
private HisApiConfigService hisApiConfigService;
|
@Autowired
|
private HisApiGetMethodService hisApiGetMethodService;
|
@Resource
|
private ISysConfigService configService;
|
@Resource
|
private ITbTransitionService transitionService;
|
|
//将方法返回值解析成json格式
|
public JSONObject getJSONObject(String builder) {
|
String Response = JSONUtil.parseObj(builder).getStr("Response");
|
return JSONUtil.parseObj(Response);
|
}
|
|
//获取方法返回值信息
|
public String getAjaxResult(AjaxResult result) {
|
return result.get("data").toString();
|
}
|
|
//对接his总接口 注册挂号接诊申请单操作
|
@Transactional
|
public AjaxResult HisApiMethods(TjCustomer customer, Long orderId) {
|
|
TjOrder tjOrder = orderService.getById(orderId);
|
Date dates = new Date();
|
final String date = DateUtil.format(dates, "yyyy-MM-dd HH:mm:ss");
|
AjaxResult result = controller.Outpincreateapply(customer);
|
String result1 = getAjaxResult(result);
|
JSONObject object = getJSONObject(result1);
|
String code = object.getStr("ResultCode");
|
if (code.equals("0")) {
|
JSONArray resultDatass = object.getJSONArray("ResultData");
|
Map<String, Object> resultData = (Map<String, Object>) resultDatass.get(0);
|
if (null != resultData && resultData.size() > 0) {
|
String pationid = resultData.get("PationId").toString();
|
if (null != pationid) {
|
customer.setPationId(pationid);
|
// customerService.updateById(customer);
|
/* OutpinregapplyDto outpinregapplyDto = new OutpinregapplyDto();
|
outpinregapplyDto.setPationid(pationid);
|
outpinregapplyDto.setSqysbm(SecurityUtils.getUsername());
|
outpinregapplyDto.setMzksbm("0101");
|
outpinregapplyDto.setCzybm("00029");
|
outpinregapplyDto.setSfjz("0");
|
outpinregapplyDto.setGhzlbm("01");
|
outpinregapplyDto.setYwckbm("0001");
|
outpinregapplyDto.setSflstd("0");
|
outpinregapplyDto.setGhrq(date);
|
//门诊挂号
|
AjaxResult ajaxResult = controller.Outpinregapply(outpinregapplyDto);
|
String result2 = getAjaxResult(ajaxResult);
|
JSONObject object1 = getJSONObject(result2);
|
String code1 = object1.getStr("ResultCode");
|
if (code1.equals("0")) {
|
JSONArray resultDatas = object1.getJSONArray("ResultData");
|
if (null != resultDatas && resultDatas.size() > 0) {
|
Map<String, Object> resultDatasss = (Map<String, Object>) resultDatas.get(0);
|
String hisRegistrationId = resultDatasss.get("his_registration_id").toString();
|
//门诊医生接诊
|
controller.Outpinconapply(hisRegistrationId, date, SecurityUtils.getUsername());
|
customer.setCardId(hisRegistrationId);
|
customerService.updateById(customer);
|
transitionService.updateCardIdByTjNumAndIdCard(customer.getCusIdcard(),hisRegistrationId);
|
if(null !=tjOrder){
|
tjOrder.setCardId(hisRegistrationId);
|
orderService.updateById(tjOrder);
|
}
|
}
|
}*/
|
AjaxResult error = tijianshenqing(customer, date);
|
if (error != null) return error;
|
return AjaxResult.success();
|
}
|
}
|
}
|
return AjaxResult.error();
|
}
|
|
|
//体检对his申请单调用方法
|
private AjaxResult tijianshenqing(TjCustomer customer, String date) {
|
//检验申请
|
OutpintestapplyDto dto = new OutpintestapplyDto();
|
dto.setHisRegistrationId(customer.getCardId());
|
dto.setSfjz(customer.getCusIdcard());
|
dto.setSqysbm(SecurityUtils.getUsername());
|
dto.setMzksbm("0101");
|
dto.setSjrq(date);
|
dto.setCzybm("00029");
|
dto.setCzyksbm("0101");
|
dto.setSfjz("1");
|
List<TbTransition> detailList = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(), customer.getCardId());
|
List<OutpintestapplyDetailsDto> detailsDtos = new ArrayList<>();
|
if (null != detailList && detailList.size() > 0) {
|
LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
|
wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
|
wq.groupBy(TjProject::getHisXmbm);
|
wq.in(TjProject::getDeptId, "241","317");
|
List<TjProject> projects = projectService.list(wq);
|
if (null != projects && projects.size() > 0) {
|
for (TjProject project : projects) {
|
if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
|
if (null != project.getHisXmbm()) {
|
OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
|
detailsDto.setMxfyxmbm(project.getHisXmbm());
|
if(project.getSfzhfy().equals("Y")){
|
detailsDto.setSfzhfy("1");
|
}else {
|
detailsDto.setSfzhfy("0");
|
}
|
detailsDto.setSl(1);
|
detailsDtos.add(detailsDto);
|
}
|
}
|
}
|
}
|
}
|
if (detailsDtos.size()>0) {
|
dto.setDetails(detailsDtos);
|
AjaxResult ajaxResult1 = controller.Outpintestapply(dto);
|
String result5 = getAjaxResult(ajaxResult1);
|
JSONObject object3 = getJSONObject(result5);
|
String code3 = object3.getStr("ResultCode");
|
if (code3.equals("0")) {
|
Map<String, Object> datas = object3.getJSONObject("ResultData");
|
datas.put("cardId", customer.getCardId());
|
JSONObject object4 = JSONUtil.parseObj(datas);
|
LambdaQueryWrapper<HisApiConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, "Outpintestapply");
|
HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper);
|
hisApiGetMethodService.save(object4, "Outpintestapply", hisApiConfig,JSONUtil.toJsonStr(BeanUtil.beanToMap(dto)));
|
|
}else {
|
return AjaxResult.error();
|
}
|
}
|
|
//门诊检查申请
|
OutpinexamapplyDto outpinexamapplyDto = new OutpinexamapplyDto();
|
outpinexamapplyDto.setHisRegistrationId(customer.getCardId());
|
outpinexamapplyDto.setSfzh(customer.getCusIdcard());
|
outpinexamapplyDto.setSqysbm(SecurityUtils.getUsername());
|
outpinexamapplyDto.setMzksbm("0101");
|
outpinexamapplyDto.setCzybm("00029");
|
outpinexamapplyDto.setCzyksbm("0101");
|
List<TbTransition> detailLists = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(), customer.getCardId());
|
List<OutpintestapplyDetailsDto> detailsDtoss = new ArrayList<>();
|
if (null != detailLists && detailLists.size() > 0) {
|
LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
|
wq.in(TjProject::getProId, detailLists.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
|
wq.groupBy(TjProject::getHisXmbm);
|
wq.in(TjProject::getDeptId, "247", "248", "249", "250", "251", "252", "271", "273", "274", "275","298");
|
List<TjProject> projects = projectService.list(wq);
|
if (null != projects && projects.size() > 0) {
|
for (TjProject project : projects) {
|
if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
|
if (null != project.getHisXmbm()) {
|
OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
|
detailsDto.setMxfyxmbm(project.getHisXmbm());
|
if(project.getSfzhfy().equals("Y")){
|
detailsDto.setSfzhfy("1");
|
}else {
|
detailsDto.setSfzhfy("0");
|
}
|
detailsDto.setSl(1);
|
detailsDtoss.add(detailsDto);
|
}
|
|
}
|
}
|
}
|
}
|
if (detailsDtoss.size()>0) {
|
outpinexamapplyDto.setDetails(detailsDtoss);
|
AjaxResult ajaxResult2 = controller.Outpinexamapply(outpinexamapplyDto);
|
String result6 = getAjaxResult(ajaxResult2);
|
JSONObject object5 = getJSONObject(result6);
|
String code4 = object5.getStr("ResultCode");
|
if (code4.equals("0")) {
|
Map<String, Object> map = object5.getJSONObject("ResultData");
|
map.put("cardId", customer.getCardId());
|
JSONObject jsonObject = JSONUtil.parseObj(map);
|
LambdaQueryWrapper<HisApiConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, "Outpinexamapply");
|
HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper);
|
hisApiGetMethodService.save(jsonObject, "Outpinexamapply", hisApiConfig,JSONUtil.toJsonStr(BeanUtil.beanToMap(outpinexamapplyDto)));
|
|
}else {
|
return AjaxResult.error();
|
}
|
}
|
|
|
//门诊治疗处置申请
|
OutpintreatapplyDto dao = new OutpintreatapplyDto();
|
dao.setHisRegistrationId(customer.getCardId());
|
dao.setSfzh(customer.getCusIdcard());
|
dao.setSqysbm(SecurityUtils.getUsername());
|
dao.setMzksbm("0101");
|
dao.setSjrq(date);
|
dao.setCzybm("00029");
|
dao.setCzyksbm("0101");
|
List<TbTransition> details = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(), customer.getCardId());
|
List<OutpintestapplyDetailsDto> detailDtos = new ArrayList<>();
|
if (null != details && details.size() > 0) {
|
LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
|
wq.in(TjProject::getProId, details.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
|
wq.groupBy(TjProject::getHisXmbm);
|
wq.in(TjProject::getDeptId, "100", "240", "253", "254", "255", "257", "258", "259", "269", "270");
|
List<TjProject> projects = projectService.list(wq);
|
if (null != projects && projects.size() > 0) {
|
for (TjProject project : projects) {
|
if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
|
if (null != project.getHisXmbm()) {
|
OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
|
detailsDto.setMxfyxmbm(project.getHisXmbm());
|
if (project.getSfzhfy().equals("Y")) {
|
detailsDto.setSfzhfy("1");
|
} else {
|
detailsDto.setSfzhfy("0");
|
}
|
detailsDto.setSl(1);
|
detailDtos.add(detailsDto);
|
}
|
}
|
}
|
}
|
}
|
if (detailDtos.size()>0) {
|
dao.setDetails(detailDtos);
|
AjaxResult mzylyzsq1 = controller.Outpintreatapply(dao);
|
String mzylyzsq2 = getAjaxResult(mzylyzsq1);
|
JSONObject mzylyzsq3 = getJSONObject(mzylyzsq2);
|
String code5 = mzylyzsq3.getStr("ResultCode");
|
if (code5.equals("0")) {
|
Map<String, Object> map = mzylyzsq3.getJSONObject("ResultData");
|
map.put("cardId", customer.getCardId());
|
JSONObject jsonObject = JSONUtil.parseObj(map);
|
LambdaQueryWrapper<HisApiConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, "Outpintreatapply");
|
HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper);
|
hisApiGetMethodService.save(jsonObject, "Outpintreatapply", hisApiConfig,JSONUtil.toJsonStr(BeanUtil.beanToMap(dao)));
|
}else {
|
return AjaxResult.error();
|
}
|
}
|
return null;
|
}
|
|
|
//退费后取消接诊作废申请单等操作
|
@Transactional
|
public boolean ZfHisApiMethods(TjCustomer customer, TjOrder order) {
|
Date dates = new Date();
|
final String date = DateUtil.format(dates, "yyyy-MM-dd HH:mm:ss");
|
|
String jcsqdh = orderService.getHuoQuJcsqdh(order.getCardId());
|
|
String jysqdh = orderService.getHuoQuJysqdh(order.getCardId());
|
|
|
String zlsqdh = orderService.getHuoQuZlsqdh(order.getCardId());
|
|
//2.1.6.5 作废门诊检查申请
|
if (null !=jcsqdh){
|
AjaxResult result = controller.Outpindelexamapply(order.getCardId(), "00029", jcsqdh);
|
String result1 = getAjaxResult(result);
|
JSONObject object = getJSONObject(result1);
|
String code = object.getStr("ResultCode");
|
if (code.equals("0")) {
|
orderService.delHuoQuJcsqdh(order.getCardId());
|
}else {
|
return false;
|
}
|
}
|
|
|
//2.1.6.3 作废门诊检验申请
|
|
AjaxResult ajaxResult =null;
|
String result2 =null;
|
JSONObject object1 =null;
|
String code1 =null;
|
|
if(null !=jysqdh){
|
ajaxResult = controller.Outpindeltestapply(order.getCardId(), "00029", jysqdh);
|
result2 = getAjaxResult(ajaxResult);
|
object1 = getJSONObject(result2);
|
code1 = object1.getStr("ResultCode");
|
if (code1.equals("0")) {
|
orderService.delHuoQuJysqdh(order.getCardId());
|
}else {
|
return false;
|
}
|
}
|
|
//2.1.6.9 作废门诊治疗处置申请
|
if(null !=zlsqdh){
|
ajaxResult = controller.Outpintdelreatapply(order.getCardId(), "00029", zlsqdh);
|
result2 = getAjaxResult(ajaxResult);
|
object1 = getJSONObject(result2);
|
code1 = object1.getStr("ResultCode");
|
if (!code1.equals("0")){
|
return false;
|
}
|
}
|
//2.1.3 门诊医生取消接诊
|
ajaxResult = controller.Outpinunconapply(order.getCardId(), date, "00029");
|
result2 = getAjaxResult(ajaxResult);
|
object1 = getJSONObject(result2);
|
code1 = object1.getStr("ResultCode");
|
if (!code1.equals("0")){
|
return false;
|
}
|
return true;
|
}
|
|
|
//获取门诊结算记录
|
@Transactional
|
public void getHisMzJsJl(TjOrder order) {
|
Date dates = new Date();
|
final String date = DateUtil.format(dates, "yyyy-MM-dd HH:mm:ss");
|
|
}
|
|
}
|