新增上报处方平台接口
This commit is contained in:
+263
-2
@@ -1,6 +1,267 @@
|
||||
package service
|
||||
|
||||
// ReportPreProduct 商品订单上报处方平台
|
||||
func ReportPreProduct() {
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"hospital-admin-api/api/dao"
|
||||
"hospital-admin-api/extend/prescription"
|
||||
"hospital-admin-api/utils"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
type OrderService struct {
|
||||
}
|
||||
|
||||
// ReportPreProduct 商品订单上报处方平台
|
||||
func (r *OrderService) ReportPreProduct(orderProductId int64) (bool, error) {
|
||||
// 获取药品订单详情
|
||||
orderProductDao := dao.OrderProductDao{}
|
||||
orderProduct, err := orderProductDao.GetOrderProductPreloadById(orderProductId)
|
||||
if err != nil || orderProduct == nil {
|
||||
return false, errors.New("订单数据错误")
|
||||
}
|
||||
|
||||
// 已上报
|
||||
if orderProduct.ReportPreStatus == 1 {
|
||||
return false, errors.New("订单已上报")
|
||||
}
|
||||
|
||||
// 检测订单状态
|
||||
if orderProduct.OrderProductStatus == 1 {
|
||||
return false, errors.New("订单处于待支付状态,无法取消")
|
||||
}
|
||||
|
||||
if orderProduct.OrderProductStatus == 3 {
|
||||
return false, errors.New("订单已发货,无法取消")
|
||||
}
|
||||
|
||||
if orderProduct.OrderProductStatus == 4 {
|
||||
return false, errors.New("订单已签收,无法取消")
|
||||
}
|
||||
|
||||
if orderProduct.OrderProductStatus == 5 {
|
||||
return false, errors.New("订单已取消,无法取消")
|
||||
}
|
||||
|
||||
// 检测支付状态
|
||||
if orderProduct.PayStatus != 2 {
|
||||
return false, errors.New("订单支付状态错误")
|
||||
}
|
||||
|
||||
// 检测订单退款状态
|
||||
if orderProduct.RefundStatus == 1 {
|
||||
return false, errors.New("订单申请退款中,无法取消")
|
||||
}
|
||||
|
||||
if orderProduct.RefundStatus == 2 {
|
||||
return false, errors.New("订单正在退款中,无法取消")
|
||||
}
|
||||
|
||||
if orderProduct.RefundStatus == 3 {
|
||||
return false, errors.New("订单已退款成功,无法取消")
|
||||
}
|
||||
|
||||
if orderProduct.RefundStatus == 6 {
|
||||
return false, errors.New("订单退款异常,请联系技术人员")
|
||||
}
|
||||
|
||||
// 获取处方数据
|
||||
orderPrescriptionDao := dao.OrderPrescriptionDao{}
|
||||
orderPrescription, _ := orderPrescriptionDao.GetById(orderProduct.OrderPrescriptionId)
|
||||
if orderPrescription == nil {
|
||||
return false, errors.New("数据错误,无处方数据")
|
||||
}
|
||||
|
||||
// 获取问诊订单数据
|
||||
orderInquiryDao := dao.OrderInquiryDao{}
|
||||
orderInquiry, _ := orderInquiryDao.GetOrderInquiryById(orderProduct.OrderInquiryId)
|
||||
if orderInquiry == nil {
|
||||
return false, errors.New("数据错误,无问诊订单数据")
|
||||
}
|
||||
|
||||
// 获取问诊病例数据
|
||||
orderInquiryCaseDao := dao.OrderInquiryCaseDao{}
|
||||
orderInquiryCase, _ := orderInquiryCaseDao.GetOrderInquiryCaseByOrderInquiryId(orderProduct.OrderInquiryId)
|
||||
if orderInquiryCase == nil {
|
||||
return false, errors.New("数据错误,无问诊病例")
|
||||
}
|
||||
|
||||
// 获取商品订单列表数据
|
||||
orderProductItemDao := dao.OrderProductItemDao{}
|
||||
orderProductItems, err := orderProductItemDao.GetOrderProductItemByOrderProductId(orderProductId)
|
||||
if err != nil || len(orderProductItems) == 0 {
|
||||
return false, errors.New("数据错误,无药品数据")
|
||||
}
|
||||
|
||||
// 获取就诊患者用户数据
|
||||
userDao := dao.UserDao{}
|
||||
user, err := userDao.GetUserById(orderInquiry.UserId)
|
||||
if err != nil && user == nil {
|
||||
return false, errors.New("就诊患者数据错误")
|
||||
}
|
||||
|
||||
// 获取家庭成员-基本信息
|
||||
patientFamilyDao := dao.PatientFamilyDao{}
|
||||
patientFamily, _ := patientFamilyDao.GetPatientFamilyById(orderInquiry.FamilyId)
|
||||
if patientFamily == nil {
|
||||
return false, errors.New("数据错误,无家庭成员数据")
|
||||
}
|
||||
|
||||
// 获取处方关联疾病数据
|
||||
orderPrescriptionIcdDao := dao.OrderPrescriptionIcdDao{}
|
||||
orderPrescriptionIcds, _ := orderPrescriptionIcdDao.GetOrderPrescriptionIcdListByOrderPrescriptionId(orderPrescription.OrderPrescriptionId)
|
||||
if err != nil || len(orderPrescriptionIcds) == 0 {
|
||||
return false, errors.New("数据错误,无处方关联疾病数据")
|
||||
}
|
||||
|
||||
// 获取医生数据
|
||||
userDoctorDao := dao.UserDoctorDao{}
|
||||
userDoctor, _ := userDoctorDao.GetUserDoctorById(orderPrescription.DoctorId)
|
||||
if userDoctor == nil {
|
||||
return false, errors.New("数据错误,无医生数据")
|
||||
}
|
||||
|
||||
// 获取医生详情数据
|
||||
userDoctorInfoDao := dao.UserDoctorInfoDao{}
|
||||
userDoctorInfo, _ := userDoctorInfoDao.GetUserDoctorInfoByDoctorId(orderPrescription.DoctorId)
|
||||
if userDoctorInfo == nil {
|
||||
return false, errors.New("数据错误,无医生详情数据")
|
||||
}
|
||||
|
||||
// 获取药师数据
|
||||
userPharmacistDao := dao.UserPharmacistDao{}
|
||||
userPharmacist, _ := userPharmacistDao.GetUserPharmacistById(orderPrescription.PharmacistId)
|
||||
if userPharmacist == nil {
|
||||
return false, errors.New("数据错误,无药师数据")
|
||||
}
|
||||
|
||||
// 获取药师详情数据
|
||||
userPharmacistInfoDao := dao.UserPharmacistInfoDao{}
|
||||
userPharmacistInfo, _ := userPharmacistInfoDao.GetUserPharmacistInfoByPharmacistId(orderPrescription.PharmacistId)
|
||||
if userPharmacistInfo == nil {
|
||||
return false, errors.New("数据错误,无药师详情数据")
|
||||
}
|
||||
|
||||
// 获取医生科室数据
|
||||
hospitalDepartmentCustomDao := dao.HospitalDepartmentCustomDao{}
|
||||
hospitalDepartmentCustom, _ := hospitalDepartmentCustomDao.GetHospitalDepartmentCustomById(userDoctor.DepartmentCustomId)
|
||||
if hospitalDepartmentCustom == nil {
|
||||
return false, errors.New("数据错误,无医生科室数据")
|
||||
}
|
||||
|
||||
// 处理疾病数据
|
||||
icdNameSlice := make([]string, 0)
|
||||
for _, orderPrescriptionIcd := range orderPrescriptionIcds {
|
||||
if orderPrescriptionIcd.IcdName != "" {
|
||||
icdNameSlice = append(icdNameSlice, orderPrescriptionIcd.IcdName)
|
||||
}
|
||||
}
|
||||
|
||||
icdNameStr := strings.Join(icdNameSlice, ";")
|
||||
|
||||
// 处理上传数据-药品数据
|
||||
drugRequests := make([]prescription.DrugRequest, len(orderProductItems))
|
||||
orderDrugRequests := make([]prescription.OrderDrugRequest, len(orderProductItems))
|
||||
for i, o := range orderProductItems {
|
||||
// 获取商品数据
|
||||
productDao := dao.ProductDao{}
|
||||
product, _ := productDao.GetProductById(o.ProductId)
|
||||
if product == nil {
|
||||
return false, errors.New("数据错误,无药品数据")
|
||||
}
|
||||
|
||||
useDays := o.Amount * 7
|
||||
if product.AvailableDays != 0 {
|
||||
useDays = int(product.AvailableDays)
|
||||
}
|
||||
|
||||
// 药品数据1
|
||||
drugRequest := prescription.DrugRequest{
|
||||
DrugCode: product.ProductPlatformCode, // 药品编码
|
||||
ApprovalNumber: product.LicenseNumber, // 批准文号
|
||||
DrugName: product.ProductName, // 药品名称
|
||||
Specifications: product.ProductSpec, // 药品规格
|
||||
Price: product.ProductPrice, // 药品单价
|
||||
PackingCount: o.Amount, // 药品数量
|
||||
SurplusPackingCount: 0, // 处方药品剩余使用数量
|
||||
PackingUnit: product.PackagingUnit, // 药品单位
|
||||
SingleDosage: 1, // 单次用量
|
||||
SingleDosageUnit: "片", // 单次用量单位
|
||||
UseName: product.SingleUse, // 用法名称
|
||||
FrequencyName: product.FrequencyUse, // 频次名称
|
||||
UseDays: useDays, // 使用天数
|
||||
}
|
||||
drugRequests[i] = drugRequest
|
||||
|
||||
// 药品数据2
|
||||
orderDrugRequest := prescription.OrderDrugRequest{
|
||||
DrugCode: product.ProductPlatformCode, // 药品编码
|
||||
ApprovalNumber: product.LicenseNumber, // 批准文号
|
||||
DrugName: product.ProductName, // 药品名称
|
||||
Specifications: product.ProductSpec, // 药品规格
|
||||
Price: product.ProductPrice, // 药品单价
|
||||
DrugCount: o.Amount, // 药品数量
|
||||
PackingUnit: product.PackagingUnit, // 药品单位
|
||||
}
|
||||
orderDrugRequests[i] = orderDrugRequest
|
||||
}
|
||||
|
||||
// 处理上传数据-处方数据
|
||||
presRequests := make([]prescription.PresRequest, 1)
|
||||
presRequest := prescription.PresRequest{
|
||||
PrescriptionNo: orderPrescription.PrescriptionCode, // // 处方编号
|
||||
PrescriptionSubType: 1, // 处方类型 0:无类型 1:普 通处方 2:儿科处 方
|
||||
PatientName: orderPrescription.PatientName, // 就诊人姓名
|
||||
PatientPhone: user.Mobile, // 就诊人联系方式
|
||||
IdCard: patientFamily.IdNumber, // 身份证号
|
||||
Advice: orderPrescription.DoctorAdvice, // 医嘱
|
||||
DiagnosisName: icdNameStr, // 诊断
|
||||
ThirdDoctorName: userDoctor.UserName, // 开方医生姓名
|
||||
ThirdDeptName: hospitalDepartmentCustom.DepartmentName, // 开方科室名称
|
||||
ThirdDoctorNameImg: utils.AddOssDomain(userDoctorInfo.SignImage),
|
||||
PrescriptionTime: time.Time(orderPrescription.DoctorCreatedTime).Format("2006-01-02 15:04:05"),
|
||||
ThirdFirstPharmacist: userPharmacist.UserName,
|
||||
ThirdFirstPharmacistImg: utils.AddOssDomain(userPharmacistInfo.SignImage),
|
||||
ThirdFirstTime: time.Time(orderPrescription.PharmacistVerifyTime).Format("2006-01-02 15:04:05"),
|
||||
ThirdLastPharmacist: userPharmacist.UserName,
|
||||
ThirdLastPharmacistImg: utils.AddOssDomain(userPharmacistInfo.SignImage),
|
||||
ThirdLastTime: time.Time(orderPrescription.PharmacistVerifyTime).Format("2006-01-02 15:04:05"),
|
||||
ThirdSignImg: utils.AddOssDomain("/basic/file/hospital_signature.png"),
|
||||
ReferenceCharge: orderProduct.AmountTotal,
|
||||
ChiefComplaint: orderInquiryCase.DiseaseDesc,
|
||||
HistoryPresent: orderInquiryCase.DiseaseClassName,
|
||||
PastHistory: orderInquiryCase.FamilyHistory,
|
||||
PhysicalExamination: "无",
|
||||
SupplementaryExamination: "无",
|
||||
AllergicHistory: orderInquiryCase.AllergyHistory,
|
||||
DrugList: drugRequests,
|
||||
OrderDrugList: orderDrugRequests,
|
||||
}
|
||||
|
||||
presRequests[0] = presRequest
|
||||
|
||||
// 处理上传数据-基础数据
|
||||
ReportPreRequest := prescription.ReportPreRequest{
|
||||
TerminalCode: "ZD-10003",
|
||||
OrderNo: orderProduct.OrderProductNo, // 订单编号
|
||||
TransactNo: orderProduct.EscrowTradeNo, // 流水单号
|
||||
PayDate: time.Time(orderProduct.PayTime).Format("2006-01-02 15:04:05"), // 支付时间
|
||||
Money: orderProduct.PaymentAmountTotal, // 订单金额
|
||||
Freight: orderProduct.LogisticsFee, // 运费(单位:元)
|
||||
TakeTypeCode: 2, // 取货方式 1 自提 2 快递,目前只支持快递,传固定值 2
|
||||
BuyerName: orderProduct.ConsigneeName, // 收货人姓名
|
||||
BuyerPhone: orderProduct.ConsigneeTel, // 收货人联系方式
|
||||
BuyerAddress: orderProduct.Address, // 收货人地址
|
||||
ProvinceCode: fmt.Sprintf("%d", orderProduct.ProvinceId), // 收货地址(省) 编码
|
||||
ProvinceName: orderProduct.Province, // 收货地址(省) 名称
|
||||
CityCode: fmt.Sprintf("%d", orderProduct.CityId), // 收货地址(市) 编码
|
||||
CityName: orderProduct.City, // 收货地址(市) 名称
|
||||
DistrictCode: fmt.Sprintf("%d", orderProduct.CountyId), // 收货地址(区 县)编码
|
||||
DistrictName: orderProduct.County, // 收货地址(区 县)名称
|
||||
PresList: presRequests,
|
||||
}
|
||||
|
||||
fmt.Println(ReportPreRequest)
|
||||
return true, nil
|
||||
}
|
||||
|
||||
@@ -168,7 +168,7 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, req requests.PutUserDo
|
||||
}
|
||||
if userDoctor.DepartmentCustomId != departmentCustomId || userDoctor.DepartmentCustomName != req.DepartmentCustomName {
|
||||
// 获取科室数据
|
||||
hospitalDepartmentCustomDao := dao.HospitalDepartmentCustom{}
|
||||
hospitalDepartmentCustomDao := dao.HospitalDepartmentCustomDao{}
|
||||
hospitalDepartmentCustom, err := hospitalDepartmentCustomDao.GetHospitalDepartmentCustomById(departmentCustomId)
|
||||
if err != nil || hospitalDepartmentCustom == nil {
|
||||
return false, errors.New("科室错误")
|
||||
@@ -802,7 +802,7 @@ func (r *UserDoctorService) AddUserDoctor(userId string, req requests.AddUserDoc
|
||||
}
|
||||
|
||||
// 获取科室数据
|
||||
hospitalDepartmentCustomDao := dao.HospitalDepartmentCustom{}
|
||||
hospitalDepartmentCustomDao := dao.HospitalDepartmentCustomDao{}
|
||||
hospitalDepartmentCustom, err := hospitalDepartmentCustomDao.GetHospitalDepartmentCustomById(departmentCustomId)
|
||||
if err != nil || hospitalDepartmentCustom == nil {
|
||||
return false, errors.New("科室错误")
|
||||
@@ -1611,7 +1611,7 @@ func (r *UserDoctorService) PutMulti(doctorId int64, req requests.PutMulti) (boo
|
||||
userCaCert, _ := userCaCertDao.GetUserCaCertByUserId(userDoctor.UserId)
|
||||
|
||||
// 获取自定义科室数据
|
||||
hospitalDepartmentCustomDao := dao.HospitalDepartmentCustom{}
|
||||
hospitalDepartmentCustomDao := dao.HospitalDepartmentCustomDao{}
|
||||
hospitalDepartmentCustom, err := hospitalDepartmentCustomDao.GetHospitalDepartmentCustomById(userDoctor.DepartmentCustomId)
|
||||
if err != nil || hospitalDepartmentCustom == nil {
|
||||
tx.Rollback()
|
||||
|
||||
Reference in New Issue
Block a user