提交 e2f8148d authored 作者: luzhangjian's avatar luzhangjian

feat:综管订单列表&订单详情

上级 33a5d0c7
package com.ebaiyihui.family.doctor.common.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class OrderDetailResDTO {
@ApiModelProperty(value = "订单ID【必填】")
@NotBlank(message = "订单ID不能为空")
private String orderId;
}
......@@ -3,6 +3,9 @@ package com.ebaiyihui.family.doctor.common.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NonNull;
import javax.validation.constraints.NotNull;
/**
* 管理端订单列表入参
......@@ -31,4 +34,8 @@ public class OrderListReqDTO extends PageDTO {
@ApiModelProperty("结束时间")
private String endTime;
@NotNull(message = "订单类型不能为空")
@ApiModelProperty("订单类型 1-签约订单 2-值班医生问诊订单")
private String singStatus;
}
package com.ebaiyihui.family.doctor.common.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class DrugDetailData {
@ApiModelProperty(value = "处方明细id")
private String presDetailId;
@ApiModelProperty(value = "药品名称")
private String drugName;
@ApiModelProperty(value = "药品规格")
private String drugSpec;
@ApiModelProperty(value = "生产企业")
private String manufacturer;
@ApiModelProperty(value = "用法用量")
private String dosage;
@ApiModelProperty(value = "数量")
private BigDecimal amount;
@ApiModelProperty(value = "数量单位")
private String amountUnit;
@ApiModelProperty(value = "用药周期")
private Integer duration;
@ApiModelProperty(value = "单价")
private String unitPrice;
@ApiModelProperty(value = "总价")
private String totalPrice;
@ApiModelProperty(value = "长期用药理由")
private String reasonDesc;
@ApiModelProperty(value = "医生备注")
private String docRemark;
@ApiModelProperty(value = "审核医师备注")
private String verifyRemark;
@ApiModelProperty(value = "药品编码")
private String productCode;
}
package com.ebaiyihui.family.doctor.common.vo;
import lombok.Data;
@Data
public class GetPresListReqVO {
private String admId;
private String appCode;
}
package com.ebaiyihui.family.doctor.common.vo;
import lombok.Data;
import java.util.List;
@Data
public class GetPresListResVO {
private String xId;
private Integer itemStatus;
private List<DrugDetailData> drugDetailList;
}
package com.ebaiyihui.family.doctor.common.vo;
import lombok.Data;
import java.util.List;
@Data
public class OrderDetailsResVo {
/**
* 订单基础信息
*/
private OrderInfo orderInfo;
/**
* 处方信息
*/
private List<GetPresListResVO> presListResVOS;
}
package com.ebaiyihui.family.doctor.common.vo;
import lombok.Data;
@Data
public class OrderInfo {
/**
* 订单编号
*/
private Long orderNo;
/**
* 患者账号/手机号
*/
private String patientPhone;
/**
* 患者姓名
*/
private String patientName;
/**
* 患者性别
*/
private Integer patientSex;
/**
* 患者年龄
*/
private Integer patientAge;
/**
* 医生电话
*/
private String doctorPhone;
/**
* 医生姓名
*/
private String doctorName;
/**
* 医生职称
*/
private String doctorTitle;
/**
* 所在医院
*/
private String hospital;
/**
* 一级科室
*/
private String firstDepartment;
/**
* 二级科室
*/
private String secondDepartment;
}
package com.ebaiyihui.family.doctor.common.vo;
import lombok.Data;
@Data
public class PrescriptionInfo {
/**
* 处方编号
*/
private String preNo;
// todo 药品信息
}
......@@ -41,5 +41,6 @@ public class ProjProperties {
private String refund;
private String checkDocAndDeptAndRegFeeInfo;
private String icdSearchName;
private String presListByAdmId;
}
package com.ebaiyihui.family.doctor.server.controller;
import com.ebaiyihui.family.doctor.common.dto.OrderDetailResDTO;
import com.ebaiyihui.family.doctor.common.dto.OrderListReqDTO;
import com.ebaiyihui.family.doctor.common.vo.OrderDetailsResVo;
import com.ebaiyihui.family.doctor.common.vo.OrderListResVo;
import com.ebaiyihui.family.doctor.server.service.PatientSignService;
import com.ebaiyihui.family.doctor.server.service.OrderManagementService;
import com.ebaiyihui.family.doctor.server.util.PageUtil;
import com.ebaiyihui.framework.response.BaseResponse;
import io.swagger.annotations.Api;
......@@ -21,13 +23,19 @@ import org.springframework.web.bind.annotation.*;
public class OrderManagementController {
@Autowired
private PatientSignService patientSignService;
private OrderManagementService orderManagementService;
@ApiOperation("管理端订单列表")
@PostMapping("/v1/orderList")
public BaseResponse<PageUtil<OrderListResVo>> orderList(@RequestBody OrderListReqDTO param) {
return patientSignService.orderList(param);
return orderManagementService.orderList(param);
}
@ApiOperation("管理端订单详情")
@PostMapping("/v1/getOrderDetails")
public BaseResponse<OrderDetailsResVo> getOrderDetails(@RequestBody OrderDetailResDTO param) {
return orderManagementService.getOrderDetails(param);
}
}
package com.ebaiyihui.family.doctor.server.service;
import com.ebaiyihui.family.doctor.common.dto.OrderDetailResDTO;
import com.ebaiyihui.family.doctor.common.dto.OrderListReqDTO;
import com.ebaiyihui.family.doctor.common.vo.OrderDetailsResVo;
import com.ebaiyihui.family.doctor.common.vo.OrderListResVo;
import com.ebaiyihui.family.doctor.server.util.PageUtil;
import com.ebaiyihui.framework.response.BaseResponse;
public interface OrderManagementService {
BaseResponse<PageUtil<OrderListResVo>> orderList(OrderListReqDTO param);
BaseResponse<OrderDetailsResVo> getOrderDetails(OrderDetailResDTO param);
}
......@@ -47,6 +47,4 @@ public interface PatientSignService {
int updateById(PatientSignEntity patientSignEntity);
BaseResponse<String> queryMasterUrl(MasterUrlDTO reqVo);
BaseResponse<PageUtil<OrderListResVo>> orderList(OrderListReqDTO param);
}
package com.ebaiyihui.family.doctor.server.service.impl;
import com.alibaba.fastjson.JSON;
import com.doctoruser.api.pojo.base.dto.doctor.QueryPersonnelInfoReq;
import com.doctoruser.api.pojo.base.vo.doctor.PersonnelInfo;
import com.ebaiyihui.family.doctor.common.dto.*;
import com.ebaiyihui.family.doctor.common.vo.*;
import com.ebaiyihui.family.doctor.server.common.constants.ProjProperties;
import com.ebaiyihui.family.doctor.server.entity.PatientEntity;
import com.ebaiyihui.family.doctor.server.entity.PatientSignEntity;
import com.ebaiyihui.family.doctor.server.feign.DoctorInfofeignClient;
import com.ebaiyihui.family.doctor.server.mapper.PatientMapper;
import com.ebaiyihui.family.doctor.server.mapper.PatientSignMapper;
import com.ebaiyihui.family.doctor.server.service.OrderManagementService;
import com.ebaiyihui.family.doctor.server.util.IDCardUtil;
import com.ebaiyihui.family.doctor.server.util.PageUtil;
import com.ebaiyihui.framework.response.BaseResponse;
import com.ebaiyihui.framework.utils.HttpKit;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
@Service
@Slf4j
public class OrderManagementServiceImpl implements OrderManagementService {
@Autowired
private PatientSignMapper patientSignMapper;
@Autowired
private PatientMapper patientMapper;
@Autowired
private ProjProperties projProperties;
@Autowired
private DoctorInfofeignClient doctorInfofeignClient;
@Override
public BaseResponse<PageUtil<OrderListResVo>> orderList(OrderListReqDTO param) {
log.info("查询订单列表入参:{}", JSON.toJSONString(param));
param.setPageNum((param.getPageNum() - 1) * param.getPageSize());
List<OrderListResVo> records = patientSignMapper.orderList(param);
log.info("records:{}", JSON.toJSONString(records));
PageUtil<OrderListResVo> pageUtil = new PageUtil<>();
pageUtil.setList(records);
QueryOrderTotalVo totalVo = patientSignMapper.countSumOrder();
pageUtil.setObject(totalVo);
log.info("查询订单列表出参:{}", JSON.toJSONString(pageUtil));
return BaseResponse.success(pageUtil);
}
@Override
public BaseResponse<OrderDetailsResVo> getOrderDetails(OrderDetailResDTO param) {
log.info("查询订单详情入参:{}", JSON.toJSONString(param));
OrderDetailsResVo resVo = new OrderDetailsResVo();
String orderId = param.getOrderId();
PatientSignEntity patientSignEntity = patientSignMapper.selectById(orderId);
if (Objects.isNull(patientSignEntity)) {
return BaseResponse.error("订单不存在");
}
// 处方信息
resVo.setPresListResVOS(getPresList(patientSignEntity.getAdmId()));
// 订单信息
resVo.setOrderInfo(buildOrderInfo(patientSignEntity));
// 沟通记录 todo
return BaseResponse.success(resVo);
}
private OrderInfo buildOrderInfo(PatientSignEntity patientSignEntity) {
log.info("buildOrderInfo:{}", JSON.toJSONString(patientSignEntity));
// 获取患者详情信息
PatientEntity patient = patientMapper.selectById(patientSignEntity.getPatientId());
log.info("patient:{}", JSON.toJSONString(patient));
// 获取医生基本信息
QueryPersonnelInfoReq queryPersonnelInfoReq = new QueryPersonnelInfoReq();
queryPersonnelInfoReq.setDoctorId(String.valueOf(patientSignEntity.getDoctorId()));
BaseResponse<PersonnelInfo> doctorInfo = doctorInfofeignClient.queryPersonnelInfo(queryPersonnelInfoReq);
if (null == doctorInfo && !doctorInfo.isSuccess()) {
log.error("IM INFORM ERROR : 获取医生信息失败 doctorId:{}", String.valueOf(patientSignEntity.getDoctorId()));
}
log.info("doctorInfo:{}", JSON.toJSONString(doctorInfo));
OrderInfo orderInfo = new OrderInfo();
orderInfo.setOrderNo(patientSignEntity.getId());
orderInfo.setPatientPhone(patientSignEntity.getPatientPhone());
orderInfo.setPatientSex(patient.getGender());
orderInfo.setPatientName(patient.getPatientName());
orderInfo.setPatientAge(IDCardUtil.getAge(patient.getCredNo()));
orderInfo.setDoctorPhone(doctorInfo.getData().getPhoneNum());
orderInfo.setDoctorPhone(patientSignEntity.getDoctorName());
orderInfo.setDoctorTitle(doctorInfo.getData().getTitle());
orderInfo.setHospital(patientSignEntity.getOrganName());
orderInfo.setFirstDepartment(patientSignEntity.getDeptName());
log.info("orderInfo:{}", JSON.toJSONString(orderInfo));
return orderInfo;
}
private List<GetPresListResVO> getPresList(String admId) {
GetPresListReqVO reqVo = new GetPresListReqVO();
reqVo.setAdmId(admId);
try {
log.info("查询处方列表URL:{},入参{}, ", projProperties.getPresListByAdmId(), JSON.toJSONString(reqVo));
String body = HttpKit.jsonPost(projProperties.getIcdSearchName(), JSON.toJSONString(reqVo));
BaseResponse<GetPresListResVO> baseResponse = JSON.parseObject(body, BaseResponse.class);
log.info("baseResponse:{} ",baseResponse);
if (baseResponse.getData() == null) {
return null;
}
List<GetPresListResVO> resVOList = (List<GetPresListResVO>) baseResponse.getData();
log.info("查询处方列表返回值:{} ",resVOList);
return resVOList;
} catch (Exception e) {
log.error("查询处方列表调用失败{}", e.getMessage());
}
return null;
}
}
......@@ -347,18 +347,6 @@ public class PatientSignServiceImpl implements PatientSignService {
return BaseResponse.success(resulStr);
}
@Override
public BaseResponse<PageUtil<OrderListResVo>> orderList(OrderListReqDTO param) {
param.setPageNum((param.getPageNum() - 1) * param.getPageSize());
List<OrderListResVo> records = patientSignMapper.orderList(param);
PageUtil<OrderListResVo> pageUtil = new PageUtil<>();
pageUtil.setList(records);
QueryOrderTotalVo totalVo = patientSignMapper.countSumOrder();
pageUtil.setObject(totalVo);
return BaseResponse.success(pageUtil);
}
public ImAccountVo getImAccounts(PatientSignEntity patientSignEntity, String admId, String imAppCode, String doctorId) {
ImAccountVo admission = new ImAccountVo();
......
......@@ -83,4 +83,5 @@ projprops:
archiving: https://his-dev.chinachdu.com/basic-api/sdk-service/appoint/register/archiving
refund: https://his-dev.chinachdu.com/basic-api/sdk-service/order/refund
checkDocAndDeptAndRegFeeInfo: https://his-dev.chinachdu.com/basic-api/sdk-service/appoint/checkDocAndDeptAndRegFeeInfo
icdSearchName: https://testapi.chinachdu.com/NCZK/medicalcloud//api/icd/v1/search/codeByName
\ No newline at end of file
icdSearchName: https://testapi.chinachdu.com/NCZK/medicalcloud//api/icd/v1/search/codeByName
presListByAdmId: https://testapi.chinachdu.com/NCZK/medicalcloud/api/prescription/v1/getPresListByAdmId
\ No newline at end of file
......@@ -44,6 +44,14 @@
and sign_end_time BETWEEN #{startTime} AND #{endTime}
</if>
</if>
<if test="singStatus!=null and singStatus!=''">
<if test="singStatus == 1">
and sign_status = 1 or sign_status = 2
</if>
<if test="singStatus == 2">
and sign_status = 3
</if>
</if>
order by create_time asc
LIMIT #{pageNum}, #{pageSize}
</select>
......@@ -70,7 +78,8 @@
LIMIT #{pageNum}, #{pageSize}
</select>
<select id="queryByAdmId" resultType="com.ebaiyihui.family.doctor.server.entity.PatientSignEntity">
select *
select
<include refid="Base_Column_List"/>
from patient_sign ps
where ps.adm_id = #{admId}
</select>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论