Commit 4d8a93f1 authored by fshenye's avatar fshenye

1. 预约接口兼容门诊预约,医生预约

2. bugfix:查询不到号源时,直接返回空,不要去查询门诊号源
3. bugfix:查询科室时,limit 1
parent c291d99d
package cn.sh.stc.sict.theme.hphy.controller.mp; package cn.sh.stc.sict.theme.hphy.controller.mp;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.net.Ipv4Util; import cn.hutool.core.net.Ipv4Util;
import cn.hutool.core.util.IdcardUtil; import cn.hutool.core.util.IdcardUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import cn.sh.stc.sict.cloud.common.core.constant.Constant; import cn.sh.stc.sict.cloud.common.core.constant.Constant;
import cn.sh.stc.sict.cloud.common.core.util.R; import cn.sh.stc.sict.cloud.common.core.util.R;
import cn.sh.stc.sict.cloud.common.core.util.WebUtils; import cn.sh.stc.sict.cloud.common.core.util.WebUtils;
import cn.sh.stc.sict.cloud.common.security.util.SecurityUtils; import cn.sh.stc.sict.cloud.common.security.util.SecurityUtils;
import cn.sh.stc.sict.cloud.upms.dto.CurrentUser; import cn.sh.stc.sict.cloud.upms.dto.CurrentUser;
import cn.sh.stc.sict.theme.hphy.constant.PatientConstant; import cn.sh.stc.sict.theme.hphy.constant.PatientConstant;
import cn.sh.stc.sict.theme.hphy.model.HpAppointment; import cn.sh.stc.sict.theme.hphy.model.*;
import cn.sh.stc.sict.theme.hphy.model.HpDocInfo; import cn.sh.stc.sict.theme.hphy.service.*;
import cn.sh.stc.sict.theme.hphy.model.HpHosInfo;
import cn.sh.stc.sict.theme.hphy.model.HphyPatientBase;
import cn.sh.stc.sict.theme.hphy.service.HpAppointmentService;
import cn.sh.stc.sict.theme.hphy.service.HpDocInfoService;
import cn.sh.stc.sict.theme.hphy.service.HpHosInfoService;
import cn.sh.stc.sict.theme.hphy.service.HphyPatientBaseService;
import cn.sh.stc.sict.theme.hphy.wd.*; import cn.sh.stc.sict.theme.hphy.wd.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -45,6 +41,7 @@ public class AppointmentController { ...@@ -45,6 +41,7 @@ public class AppointmentController {
private HpDocInfoService hpDocInfoService; private HpDocInfoService hpDocInfoService;
private HphyPatientBaseService hphyPatientBaseService; private HphyPatientBaseService hphyPatientBaseService;
private HpHosInfoService hosInfoService; private HpHosInfoService hosInfoService;
private HpDeptInfoService hpDeptInfoService;
@ApiOperation("预约须知") @ApiOperation("预约须知")
@GetMapping("/app/rule") @GetMapping("/app/rule")
...@@ -56,16 +53,21 @@ public class AppointmentController { ...@@ -56,16 +53,21 @@ public class AppointmentController {
@ApiOperation("预约") @ApiOperation("预约")
@PostMapping("/app") @PostMapping("/app")
public R appointment(@RequestBody OrderInfo order) throws Exception { public R appointment(@RequestBody OrderInfo order) throws Exception {
log.error("预约 order = {}", JSONUtil.toJsonStr(order));
CurrentUser current = SecurityUtils.getCurrentUser(); CurrentUser current = SecurityUtils.getCurrentUser();
HpAppointment app = new HpAppointment();
if (StrUtil.isBlank(current.getOpenId())) { if (StrUtil.isBlank(current.getOpenId())) {
return new R().error("患者信息异常!"); return new R().error("患者信息异常!");
} }
if (StrUtil.isBlank(order.getHosOrgCode())) { if (StrUtil.isBlank(order.getHosOrgCode())) {
return new R().error("预约医院信息不可为空!"); return new R().error("预约医院信息不可为空!");
} }
if (StrUtil.isBlank(order.getDoctorId())) { if (WanDaConstant.ORDER_TYPE_OUTP.equals(order.getOrderType()) && StrUtil.isBlank(order.getDoctorId())) {
return new R().error("预约医生信息不可为空!"); return new R().error("预约医生信息不可为空!");
} }
if (WanDaConstant.ORDER_TYPE_CLINC.equals(order.getOrderType()) && StrUtil.isBlank(order.getDeptId())) {
return new R().error("预约门诊信息不可为空!");
}
if (StrUtil.isBlank(order.getScheduleId()) || StrUtil.isBlank(order.getNumSourceId())) { if (StrUtil.isBlank(order.getScheduleId()) || StrUtil.isBlank(order.getNumSourceId())) {
return new R().error("预约排班号源信息不可为空!"); return new R().error("预约排班号源信息不可为空!");
} }
...@@ -77,14 +79,32 @@ public class AppointmentController { ...@@ -77,14 +79,32 @@ public class AppointmentController {
if (null == patient) { if (null == patient) {
return new R().error("未找到患者信息!"); return new R().error("未找到患者信息!");
} }
HpDocInfo docInfo = hpDocInfoService.getById(order.getDoctorId()); if(WanDaConstant.ORDER_TYPE_OUTP.equals(order.getOrderType())){
if (null == docInfo) { HpDocInfo docInfo = hpDocInfoService.getById(order.getDoctorId());
return new R().error("未找到医生信息!"); if (null == docInfo) {
return new R().error("未找到医生信息!");
}
order.setOneDeptCode(docInfo.getOneDeptCode());
order.setDeptCode(docInfo.getDeptCode());
order.setResourceCode(docInfo.getResourceCode());
app.setDoctorId(docInfo.getId().toString());
app.setResourceCertId(docInfo.getPersonId());
app.setHosOrgName(docInfo.getHosName());
app.setDeptName(docInfo.getDeptName());
app.setResourceName(docInfo.getResourceName());
}else{
HpDeptInfo deptInfo = hpDeptInfoService.getById(order.getDeptId());
if (null == deptInfo) {
return new R().error("未找到门诊信息!");
}
order.setOneDeptCode(deptInfo.getOneDeptCode());
order.setDeptCode(deptInfo.getDeptCode());
order.setResourceCode(deptInfo.getDeptCode());
app.setHosOrgName(deptInfo.getHosName());
app.setDeptName(deptInfo.getDeptName());
app.setResourceName(deptInfo.getDeptName());
} }
order.setOneDeptCode(docInfo.getOneDeptCode()); // order.setOrderType(WanDaConstant.ORDER_TYPE_OUTP);
order.setDeptCode(docInfo.getDeptCode());
order.setOrderType(WanDaConstant.ORDER_TYPE_OUTP);
order.setResourceCode(docInfo.getResourceCode());
order.setChannelCode(WanDaConstant.CHANNEL_CODE_OTHER); order.setChannelCode(WanDaConstant.CHANNEL_CODE_OTHER);
order.setPayMode(WanDaConstant.PAY_MODE_HOSP); order.setPayMode(WanDaConstant.PAY_MODE_HOSP);
order.setUserCardType(WanDaConstant.USER_CARD_TYPE_ID); order.setUserCardType(WanDaConstant.USER_CARD_TYPE_ID);
...@@ -102,29 +122,25 @@ public class AppointmentController { ...@@ -102,29 +122,25 @@ public class AppointmentController {
order.setChannelName(WanDaConstant.CHANNEL_NAME); order.setChannelName(WanDaConstant.CHANNEL_NAME);
order.setNumSourceFrom(WanDaConstant.NUM_SOURCE_FROM); order.setNumSourceFrom(WanDaConstant.NUM_SOURCE_FROM);
order.setPatient_type(WanDaConstant.PATIENT_TYPE_NORMAL); order.setPatient_type(WanDaConstant.PATIENT_TYPE_NORMAL);
if (StrUtil.isBlank(order.getMediCardId()) || StrUtil.isBlank(order.getMediCardType())){ if (StrUtil.isBlank(order.getMediCardId()) || StrUtil.isBlank(order.getMediCardType())) {
order.setMediCardId(patient.getMediCardId()); order.setMediCardId(patient.getMediCardId());
order.setMediCardType(patient.getMediCardType()); order.setMediCardType(patient.getMediCardType());
} }
order.setUserBD(DateUtil.format(IdcardUtil.getBirthDate(patient.getCertId()), DatePattern.NORM_DATE_PATTERN)); order.setUserBD(DateUtil.format(IdcardUtil.getBirthDate(patient.getCertId()), DatePattern.NORM_DATE_PATTERN));
AppResult result = WanDaHttpUtil.submitOrderByUserInfo(order); AppResult result = WanDaHttpUtil.submitOrderByUserInfo(order);
if (null != result) { if (null != result) {
MapperFactory factory = new DefaultMapperFactory.Builder().build(); // MapperFactory factory = new DefaultMapperFactory.Builder().build();
HpAppointment app = factory.getMapperFacade().map(order, HpAppointment.class); // HpAppointment app = factory.getMapperFacade().map(order, HpAppointment.class);
BeanUtil.copyProperties(order, app);
app.setOrderId(result.getOrderId()); app.setOrderId(result.getOrderId());
app.setPatientId(patient.getId().toString()); app.setPatientId(patient.getId().toString());
app.setDoctorId(docInfo.getId().toString());
app.setResourceCertId(docInfo.getPersonId());
app.setNumSourceDetailId(result.getNumSourceDetailId()); app.setNumSourceDetailId(result.getNumSourceDetailId());
app.setNumPassword(result.getNumPassword()); app.setNumPassword(result.getNumPassword());
app.setRoom(result.getRoom()); app.setRoom(result.getRoom());
app.setHosNumSourceId(result.getHosNumSourceId()); app.setHosNumSourceId(result.getHosNumSourceId());
app.setStatus(Constant.STRING_NO); app.setStatus(Constant.STRING_NO);
app.setHosOrgName(docInfo.getHosName());
app.setDeptName(docInfo.getDeptName());
app.setOrderNumType(order.getOrderNumType()); app.setOrderNumType(order.getOrderNumType());
app.setPatientName(patient.getName()); app.setPatientName(patient.getName());
app.setResourceName(docInfo.getResourceName());
app.setStatus(Constant.STRING_NO); app.setStatus(Constant.STRING_NO);
app.setEvaStatus(Constant.BYTE_NO); app.setEvaStatus(Constant.BYTE_NO);
hpAppointmentService.save(app); hpAppointmentService.save(app);
...@@ -183,7 +199,7 @@ public class AppointmentController { ...@@ -183,7 +199,7 @@ public class AppointmentController {
@ApiOperation("预约详情") @ApiOperation("预约详情")
@GetMapping("/app/info") @GetMapping("/app/info")
public R appInfo(@RequestParam("appId")String appId) { public R appInfo(@RequestParam("appId") String appId) {
HpAppointment app = hpAppointmentService.getById(appId); HpAppointment app = hpAppointmentService.getById(appId);
return new R(app); return new R(app);
} }
......
...@@ -74,22 +74,22 @@ public class WDController { ...@@ -74,22 +74,22 @@ public class WDController {
List<NumSourceInfo> list = WanDaHttpUtil.getOrderNumInfo(numSourceInfo); List<NumSourceInfo> list = WanDaHttpUtil.getOrderNumInfo(numSourceInfo);
if (CollUtil.isNotEmpty(list)) { // if (CollUtil.isNotEmpty(list)) {
return R.builder().code(Constant.BYTE_YES).data(list).bizCode(Constant.INT_NO).build(); // return R.builder().code(Constant.BYTE_YES).data(list).bizCode(Constant.INT_NO).build();
} // }
//
DeptInfo deptInfo = new DeptInfo(); // DeptInfo deptInfo = new DeptInfo();
deptInfo.setHosOrgCode(numSourceInfo.getHosOrgCode()); // deptInfo.setHosOrgCode(numSourceInfo.getHosOrgCode());
deptInfo.setOneDeptCode(numSourceInfo.getOneDeptCode()); // deptInfo.setOneDeptCode(numSourceInfo.getOneDeptCode());
deptInfo.setDeptCode(numSourceInfo.getDeptCode()); // deptInfo.setDeptCode(numSourceInfo.getDeptCode());
List<OutPatInfo> outPatInfo = WanDaHttpUtil.getResourceOutPatInfo(deptInfo); // List<OutPatInfo> outPatInfo = WanDaHttpUtil.getResourceOutPatInfo(deptInfo);
if (CollUtil.isNotEmpty(outPatInfo)) { // if (CollUtil.isNotEmpty(outPatInfo)) {
numSourceInfo.setOrderType(WanDaConstant.ORDER_TYPE_CLINC); // numSourceInfo.setOrderType(WanDaConstant.ORDER_TYPE_CLINC);
numSourceInfo.setResourceCode(outPatInfo.get(0).getResourceCode()); // numSourceInfo.setResourceCode(outPatInfo.get(0).getResourceCode());
list = WanDaHttpUtil.getOrderNumInfo(numSourceInfo); // list = WanDaHttpUtil.getOrderNumInfo(numSourceInfo);
//
return new R(list); // return new R(list);
} // }
return new R().success(list); return new R().success(list);
} }
......
...@@ -44,6 +44,7 @@ public class HpDeptInfoServiceImpl extends ServiceImpl<HpDeptInfoMapper, HpDeptI ...@@ -44,6 +44,7 @@ public class HpDeptInfoServiceImpl extends ServiceImpl<HpDeptInfoMapper, HpDeptI
.and(i -> i.eq(HpDeptInfo::getOneDeptCode, deptCode) .and(i -> i.eq(HpDeptInfo::getOneDeptCode, deptCode)
.or().eq(HpDeptInfo::getDeptCode, deptCode)) .or().eq(HpDeptInfo::getDeptCode, deptCode))
.orderByDesc(HpDeptInfo::getDeptLevel) .orderByDesc(HpDeptInfo::getDeptLevel)
.last("limit 1")
); );
if (deptInfo == null){ if (deptInfo == null){
log.error("根据医院编码:{} 和科室编码:{} 未查出科室信息", hospitalCode, deptCode); log.error("根据医院编码:{} 和科室编码:{} 未查出科室信息", hospitalCode, deptCode);
......
...@@ -7,6 +7,7 @@ import lombok.Data; ...@@ -7,6 +7,7 @@ import lombok.Data;
@XStreamAlias("OrderInfo") @XStreamAlias("OrderInfo")
public class OrderInfo { public class OrderInfo {
private String doctorId; private String doctorId;
private String deptId;
private String hosOrgCode; private String hosOrgCode;
private String oneDeptCode; private String oneDeptCode;
private String deptCode; private String deptCode;
......
...@@ -3,7 +3,7 @@ package cn.sh.stc.sict.theme.hphy.wd; ...@@ -3,7 +3,7 @@ package cn.sh.stc.sict.theme.hphy.wd;
public class WanDaConstant { public class WanDaConstant {
/** /**
* 预约类型:医生 * 预约类型:1-医生 2-门诊
*/ */
public static final String ORDER_TYPE_OUTP = "1"; public static final String ORDER_TYPE_OUTP = "1";
public static final String ORDER_TYPE_CLINC = "2"; public static final String ORDER_TYPE_CLINC = "2";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment