Commit c09a2228 authored by 向怀芳's avatar 向怀芳 🎱

预约

取消预约
预约列表
预约详情
parent 0474c4c6
...@@ -9,7 +9,7 @@ import org.springframework.security.core.userdetails.User; ...@@ -9,7 +9,7 @@ import org.springframework.security.core.userdetails.User;
import java.util.Collection; import java.util.Collection;
/** /**
* @Description TODO 扩展用户信息 * @Description 扩展用户信息
* @Author * @Author
* @Date * @Date
*/ */
......
...@@ -82,6 +82,14 @@ public class PatientConstant { ...@@ -82,6 +82,14 @@ public class PatientConstant {
public static final String DIABETES = "diabetes"; public static final String DIABETES = "diabetes";
public static final String OTHER = "other"; public static final String OTHER = "other";
public static final String GENDER_1 = "男"; public static final String GENDER_1 = "男";
/**
* 国标性别:男
*/
public static final String NORMAL_GENDER_1 = "1";
/**
* 国标性别:女
*/
public static final String NORMAL_GENDER_2 = "2";
public static Byte getGender(String gender) { public static Byte getGender(String gender) {
if (GENDER_1.equals(gender)) { if (GENDER_1.equals(gender)) {
...@@ -89,4 +97,18 @@ public class PatientConstant { ...@@ -89,4 +97,18 @@ public class PatientConstant {
} }
return Constant.BYTE_NO; return Constant.BYTE_NO;
} }
/**
* 获取国标性别
*
* @param gender
* @return
*/
public static String getNomalGender(String gender) {
if (GENDER_1.equals(gender)) {
return NORMAL_GENDER_1;
}
return NORMAL_GENDER_2;
}
} }
package cn.sh.stc.sict.theme.hphy.controller.mp; package cn.sh.stc.sict.theme.hphy.controller.mp;
import cn.hutool.core.net.Ipv4Util;
import cn.hutool.core.util.StrUtil;
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.security.util.SecurityUtils;
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.model.HpAppointment;
import cn.sh.stc.sict.theme.hphy.model.HpDocInfo;
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.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.extension.plugins.pagination.Page;
import io.netty.util.internal.MacAddressUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import ma.glasnost.orika.MapperFactory;
import ma.glasnost.orika.impl.DefaultMapperFactory;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
/** /**
...@@ -18,48 +37,129 @@ import org.springframework.web.bind.annotation.*; ...@@ -18,48 +37,129 @@ import org.springframework.web.bind.annotation.*;
@Api(tags = "[C]预约挂号管理") @Api(tags = "[C]预约挂号管理")
public class AppointmentController { public class AppointmentController {
private HpAppointmentService hpAppointmentService;
private HpDocInfoService hpDocInfoService;
private HphyPatientBaseService hphyPatientBaseService;
@ApiOperation("预约须知") @ApiOperation("预约须知")
@GetMapping("/app/rule") @GetMapping("/app/rule")
public R getAppRule(HosInfo hosInfo){ public R getAppRule(HosInfo hosInfo) {
HospitalCfg cfg = WanDaHttpUtil.getHospitalCfg(hosInfo); HospitalCfg cfg = WanDaHttpUtil.getHospitalCfg(hosInfo);
return new R(cfg); return new R(cfg);
} }
@ApiOperation("预约") @ApiOperation("预约")
@PostMapping("/app") @PostMapping("/app")
public R appointment(@RequestBody OrderInfo orderInfo){ public R appointment(@RequestBody OrderInfo order) {
CurrentUser current = SecurityUtils.getCurrentUser();
AppResult result = WanDaHttpUtil.submitOrderByUserInfo(orderInfo); if (StrUtil.isBlank(current.getOpenId())) {
return new R().error("患者信息异常!");
// TODO 调用service存入mysql }
if (StrUtil.isBlank(order.getHosOrgCode())) {
return new R(); return new R().error("预约医院信息不可为空!");
}
if (StrUtil.isBlank(order.getDoctorId())) {
return new R().error("预约医生信息不可为空!");
}
if (StrUtil.isBlank(order.getScheduleId()) || StrUtil.isBlank(order.getNumSourceId())) {
return new R().error("预约排班号源信息不可为空!");
}
HphyPatientBase patient = hphyPatientBaseService.getByOpenId(current.getOpenId());
if (null == patient) {
return new R().error("未找到患者信息!");
}
HpDocInfo docInfo = hpDocInfoService.getById(order.getDoctorId());
if (null == docInfo) {
return new R().error("未找到医生信息!");
}
order.setOneDeptCode(docInfo.getOneDeptCode());
order.setDeptCode(docInfo.getDeptCode());
order.setOrderType(WanDaConstant.ORDER_TYPE_OUTP);
order.setResourceCode(docInfo.getResourceCode());
order.setChannelCode(WanDaConstant.CHANNEL_CODE_OTHER);
order.setPayMode(WanDaConstant.PAY_MODE_HOSP);
order.setUserCardType(WanDaConstant.USER_CARD_TYPE_ID);
order.setUserCardId(patient.getCertId());
order.setUserName(patient.getName());
order.setUserPhone(patient.getPhone());
order.setUserSex(PatientConstant.getNomalGender(patient.getGender()));
order.setReplaceUserCardType(WanDaConstant.USER_CARD_TYPE_ID);
order.setReplaceUserCardId(patient.getCertId());
order.setReplaceUserName(patient.getName());
order.setIpAddr(WebUtils.getIP());
order.setMacAddr(WanDaConstant.DEFAULT_MAC_ADDR);
order.setPlatformCode(WanDaConstant.PLATFORM_CODE);
order.setPlatformType(WanDaConstant.PLATFORM_TYPE);
order.setChannelName(WanDaConstant.CHANNEL_NAME);
order.setNumSourceFrom(WanDaConstant.NUM_SOURCE_FROM);
AppResult result = WanDaHttpUtil.submitOrderByUserInfo(order);
if (null != result) {
MapperFactory factory = new DefaultMapperFactory.Builder().build();
HpAppointment app = factory.getMapperFacade().map(order, HpAppointment.class);
app.setOrderId(result.getOrderId());
app.setPatientId(patient.getId().toString());
app.setDoctorId(docInfo.getId().toString());
app.setResourceCertId(docInfo.getPersonId());
app.setNumSourceDetailId(result.getNumSourceDetailId());
app.setNumPassword(result.getNumPassword());
app.setRoom(result.getRoom());
app.setHosNumSourceId(result.getHosNumSourceId());
app.setStatus(Constant.STRING_NO);
hpAppointmentService.save(app);
return new R().success(result);
}
return new R().error("预约失败!");
} }
@ApiOperation("取消预约") @ApiOperation("取消预约")
@PostMapping("/cancel/app") @PostMapping("/cancel/app")
public R cancelAppointment(@RequestBody CancelOrderInfo orderInfo){ public R cancelAppointment(@RequestBody CancelOrderInfo order) {
if (StrUtil.isBlank(order.getAppId())) {
boolean flag = WanDaHttpUtil.orderCancelInfo(orderInfo); return new R().error("预约信息不可为空!");
}
// TODO 调用service存入mysql HpAppointment app = hpAppointmentService.getById(order.getAppId());
if (null == app) {
return new R(); return new R().error("未找到预约信息!");
}
boolean flag = WanDaHttpUtil.orderCancelInfo(order);
if (flag) {
HpAppointment update = new HpAppointment();
update.setId(app.getId());
update.setStatus(Constant.STRING_YES);
hpAppointmentService.updateById(update);
return new R();
}
return new R().error("取消预约失败!");
} }
@ApiOperation("预约列表") @ApiOperation("预约列表")
@GetMapping("/app/list") @GetMapping("/app/list")
public R appList(){ public R appList(Page page,
@RequestParam(value = "startDate", required = false) String startDate,
return new R(); @RequestParam(value = "endDate", required = false) String endDate) {
CurrentUser current = SecurityUtils.getCurrentUser();
if (StrUtil.isBlank(current.getOpenId())) {
return new R().error("患者信息异常!");
}
HphyPatientBase patient = hphyPatientBaseService.getByOpenId(current.getOpenId());
if (null == patient) {
return new R().error("未找到患者信息!");
}
LambdaQueryWrapper<HpAppointment> wrapper = new LambdaQueryWrapper<>();
wrapper.ge(StrUtil.isNotBlank(startDate), HpAppointment::getNumSourceDate, startDate)
.le(StrUtil.isNotBlank(endDate), HpAppointment::getNumSourceDate, endDate)
.orderByDesc(HpAppointment::getCreateTime);
page = hpAppointmentService.page(page, wrapper);
return new R(page);
} }
@ApiOperation("预约详情") @ApiOperation("预约详情")
@GetMapping("/app/info") @GetMapping("/app/info")
public R appInfo(){ public R appInfo(@RequestParam("appId")String appId) {
HpAppointment app = hpAppointmentService.getById(appId);
return new R(); return new R(app);
} }
} }
package cn.sh.stc.sict.theme.hphy.model; package cn.sh.stc.sict.theme.hphy.model;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -7,6 +9,7 @@ import lombok.Data; ...@@ -7,6 +9,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
/** /**
* [黄浦]预约记录(HpAppointment)表实体类 * [黄浦]预约记录(HpAppointment)表实体类
...@@ -19,111 +22,139 @@ import java.io.Serializable; ...@@ -19,111 +22,139 @@ import java.io.Serializable;
public class HpAppointment extends Model<HpAppointment> { public class HpAppointment extends Model<HpAppointment> {
//id //id
@TableId @TableId
@ApiModelProperty(hidden = false, value = "id") @ApiModelProperty(value = "id")
private Long id; private Long id;
//医院代码 //医院代码
@ApiModelProperty(hidden = false, value = "医院代码") @ApiModelProperty(value = "医院代码")
private String hosOrgCode; private String hosOrgCode;
//一级科室代码 //一级科室代码
@ApiModelProperty(hidden = false, value = "一级科室代码") @ApiModelProperty(value = "一级科室代码")
private String oneDeptCode; private String oneDeptCode;
//二级科室代码 //二级科室代码
@ApiModelProperty(hidden = false, value = "二级科室代码") @ApiModelProperty(value = "二级科室代码")
private String deptCode; private String deptCode;
//预约类型:1-医生 2-门诊 //预约类型:1-医生 2-门诊
@ApiModelProperty(hidden = false, value = "预约类型:1-医生 2-门诊") @ApiModelProperty(value = "预约类型:1-医生 2-门诊")
private String orderType; private String orderType;
//医生|门诊代码 //医生|门诊代码
@ApiModelProperty(hidden = false, value = "医生|门诊代码") @ApiModelProperty(value = "医生|门诊代码")
private String resourceCode; private String resourceCode;
@ApiModelProperty(value = "医生|门诊代码 姓名")
private String resourceName;
@ApiModelProperty(value = "医生证件号")
private String resourceCertId;
//预约渠道方式:1-官网 2-微信 3-app 4-支付宝 5-电话 6-转诊预约 7-(1+1+1)转诊预约 8-现场预约 0-其他 //预约渠道方式:1-官网 2-微信 3-app 4-支付宝 5-电话 6-转诊预约 7-(1+1+1)转诊预约 8-现场预约 0-其他
@ApiModelProperty(hidden = false, value = "预约渠道方式:1-官网 2-微信 3-app 4-支付宝 5-电话 6-转诊预约 7-(1+1+1)转诊预约 8-现场预约 0-其他") @ApiModelProperty(value = "预约渠道方式:1-官网 2-微信 3-app 4-支付宝 5-电话 6-转诊预约 7-(1+1+1)转诊预约 8-现场预约 0-其他")
private String channelCode; private String channelCode;
//排班id //排班id
@ApiModelProperty(hidden = false, value = "排班id") @ApiModelProperty(value = "排班id")
private String scheduleId; private String scheduleId;
//号源id //号源id
@ApiModelProperty(hidden = false, value = "号源id") @ApiModelProperty(value = "号源id")
private String numSourceId; private String numSourceId;
//支付方式 //支付方式
@ApiModelProperty(hidden = false, value = "支付方式") @ApiModelProperty(value = "支付方式")
private String payMode; private String payMode;
//预约患者类型 //预约患者类型
@ApiModelProperty(hidden = false, value = "预约患者类型") @ApiModelProperty(value = "预约患者类型")
private String patientType; private String patientType;
//1+1+1 签约编号 //1+1+1 签约编号
@ApiModelProperty(hidden = false, value = "1+1+1 签约编号") @ApiModelProperty(value = "1+1+1 签约编号")
private String patientId; private String patientId;
//就诊人卡号 //就诊人卡号
@ApiModelProperty(hidden = false, value = "就诊人卡号") @ApiModelProperty(value = "就诊人卡号")
private String mediCardId; private String mediCardId;
//就诊人卡类型 //就诊人卡类型
@ApiModelProperty(hidden = false, value = "就诊人卡类型") @ApiModelProperty(value = "就诊人卡类型")
private String mediCardType; private String mediCardType;
//就诊人证件类型 //就诊人证件类型
@ApiModelProperty(hidden = false, value = "就诊人证件类型") @ApiModelProperty(value = "就诊人证件类型")
private String userCardType; private String userCardType;
//就诊人证件号码 //就诊人证件号码
@ApiModelProperty(hidden = false, value = "就诊人证件号码") @ApiModelProperty(value = "就诊人证件号码")
private String userCardId; private String userCardId;
//就诊人姓名 //就诊人姓名
@ApiModelProperty(hidden = false, value = "就诊人姓名") @ApiModelProperty(value = "就诊人姓名")
private String userName; private String userName;
//手机号码 //手机号码
@ApiModelProperty(hidden = false, value = "手机号码") @ApiModelProperty(value = "手机号码")
private String userPhone; private String userPhone;
//就诊人性别 //就诊人性别
@ApiModelProperty(hidden = false, value = "就诊人性别") @ApiModelProperty(value = "就诊人性别")
private String userSex; private String userSex;
//就诊人出生日期 //就诊人出生日期
@ApiModelProperty(hidden = false, value = "就诊人出生日期") @ApiModelProperty(value = "就诊人出生日期")
private String userBd; private String userBd;
//就诊人联系地址 //就诊人联系地址
@ApiModelProperty(hidden = false, value = "就诊人联系地址") @ApiModelProperty(value = "就诊人联系地址")
private String userContAdd; private String userContAdd;
//预约人证件类型 //预约人证件类型
@ApiModelProperty(hidden = false, value = "预约人证件类型") @ApiModelProperty(value = "预约人证件类型")
private String replaceUserCardType; private String replaceUserCardType;
//预约人证件号码 //预约人证件号码
@ApiModelProperty(hidden = false, value = "预约人证件号码") @ApiModelProperty(value = "预约人证件号码")
private String replaceUserCardId; private String replaceUserCardId;
//预约人姓名 //预约人姓名
@ApiModelProperty(hidden = false, value = "预约人姓名") @ApiModelProperty(value = "预约人姓名")
private String replaceUserName; private String replaceUserName;
//ip地址 //ip地址
@ApiModelProperty(hidden = false, value = "ip地址") @ApiModelProperty(value = "ip地址")
private String ipAddr; private String ipAddr;
//mac地址 //mac地址
@ApiModelProperty(hidden = false, value = "mac地址") @ApiModelProperty(value = "mac地址")
private String macAddr; private String macAddr;
//预约转诊转出机构代码(1+1+1预约转诊专用) //预约转诊转出机构代码(1+1+1预约转诊专用)
@ApiModelProperty(hidden = false, value = "预约转诊转出机构代码(1+1+1预约转诊专用)") @ApiModelProperty(value = "预约转诊转出机构代码(1+1+1预约转诊专用)")
private String outHospitalCode; private String outHospitalCode;
//预约转诊转出机构本地转诊id //预约转诊转出机构本地转诊id
@ApiModelProperty(hidden = false, value = "预约转诊转出机构本地转诊id") @ApiModelProperty(value = "预约转诊转出机构本地转诊id")
private String outOrderId; private String outOrderId;
//号源日期 //号源日期
@ApiModelProperty(hidden = false, value = "号源日期") @ApiModelProperty(value = "号源日期")
private String numSourceDate; private String numSourceDate;
//就诊_开始时段 //就诊_开始时段
@ApiModelProperty(hidden = false, value = "就诊_开始时段") @ApiModelProperty(value = "就诊_开始时段")
private String startTime; private String startTime;
//就诊_结束时段 //就诊_结束时段
@ApiModelProperty(hidden = false, value = "就诊_结束时段") @ApiModelProperty(value = "就诊_结束时段")
private String endTime; private String endTime;
//预约平台类型 //预约平台类型
@ApiModelProperty(hidden = false, value = "预约平台类型") @ApiModelProperty(value = "预约平台类型")
private String platformType; private String platformType;
//预约平台菜吗 //预约平台菜吗
@ApiModelProperty(hidden = false, value = "预约平台菜吗") @ApiModelProperty(value = "预约平台菜吗")
private String platformCode; private String platformCode;
//预约渠道描述 //预约渠道描述
@ApiModelProperty(hidden = false, value = "预约渠道描述") @ApiModelProperty(value = "预约渠道描述")
private String channelName; private String channelName;
//号源来源 //号源来源
@ApiModelProperty(hidden = false, value = "号源来源") @ApiModelProperty(value = "号源来源")
private String numSourceFrom; private String numSourceFrom;
@ApiModelProperty(value = "状态:0-默认 1-取消预约")
private String status;
private String doctorId;
private String orderId;
private String visitNo;
private String numSourceDetailId;
private String numPassword;
private String room;
private String hosNumSourceId;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty(hidden = true, value = "")
private Date createTime;
/**
*
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty(hidden = true, value = "")
private Date updateTime;
/** /**
* 获取主键值 * 获取主键值
......
...@@ -125,7 +125,7 @@ public class HphyPatientBase extends Model<HphyPatientBase> { ...@@ -125,7 +125,7 @@ public class HphyPatientBase extends Model<HphyPatientBase> {
@ApiModelProperty(value = "卡类型") @ApiModelProperty(value = "卡类型")
private String mediCardType; private String mediCardType;
@ApiModelProperty(value = "卡类型") @ApiModelProperty(value = "企业名称")
private String enterpriseName; private String enterpriseName;
@TableField(exist = false) @TableField(exist = false)
......
package cn.sh.stc.sict.theme.hphy.wd; package cn.sh.stc.sict.theme.hphy.wd;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import lombok.Data; import lombok.Data;
@Data @Data
@XStreamAlias("OrderInfo")
public class CancelOrderInfo { public class CancelOrderInfo {
private String hosOrgCode ; private String hosOrgCode;
private String orderId ; private String orderId;
private String cancelReason; private String cancelReason;
private String cancelObj ; private String cancelObj;
private String appId;
} }
...@@ -4,6 +4,7 @@ import lombok.Data; ...@@ -4,6 +4,7 @@ import lombok.Data;
@Data @Data
public class OrderInfo { public class OrderInfo {
private String doctorId;
private String hosOrgCode; private String hosOrgCode;
private String oneDeptCode; private String oneDeptCode;
private String deptCode; private String deptCode;
......
package cn.sh.stc.sict.theme.hphy.wd;
public class WanDaConstant {
/**
* 预约类型:医生
*/
public static final String ORDER_TYPE_OUTP = "1";
/**
* 预约方式:其他
*/
public static final String CHANNEL_CODE_OTHER = "9";
/**
* 支付方式:到院支付
*/
public static final String PAY_MODE_HOSP = "3";
/**
* 就诊人卡类型:1-身份证
*/
public static final String USER_CARD_TYPE_ID = "1";
/**
* 默认mac地址
*/
public static final String DEFAULT_MAC_ADDR = "FF-FF-FF-FF-FF-FF";
public static final String PLATFORM_TYPE = "0";
public static final String PLATFORM_CODE = "高血压精准导医平台";
public static final String CHANNEL_NAME = "高血压精准导医平台";
public static final String NUM_SOURCE_FROM = "3";
}
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