175 lines
7.0 KiB
Go
175 lines
7.0 KiB
Go
package service
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"hospital-admin-api/api/dao"
|
|
"hospital-admin-api/api/model"
|
|
"hospital-admin-api/api/responses/orderPrescriptionIcdResponse"
|
|
"hospital-admin-api/api/responses/orderPrescriptionProductResponse"
|
|
"hospital-admin-api/api/responses/orderPrescriptionResponse"
|
|
)
|
|
|
|
// OrderPrescriptionService 处方
|
|
type OrderPrescriptionService struct {
|
|
}
|
|
|
|
// GetOrderPrescriptionById 获取处方数据
|
|
func (r *OrderPrescriptionService) GetOrderPrescriptionById(OrderPrescriptionId int64) (u *orderPrescriptionResponse.OrderPrescription, err error) {
|
|
orderPrescriptionDao := dao.OrderPrescriptionDao{}
|
|
orderPrescription, err := orderPrescriptionDao.GetById(OrderPrescriptionId)
|
|
if orderPrescription == nil {
|
|
return nil, nil
|
|
}
|
|
|
|
u = &orderPrescriptionResponse.OrderPrescription{
|
|
OrderPrescriptionId: fmt.Sprintf("%d", orderPrescription.OrderPrescriptionId),
|
|
OrderInquiryId: fmt.Sprintf("%d", orderPrescription.OrderInquiryId),
|
|
DoctorId: fmt.Sprintf("%d", orderPrescription.DoctorId),
|
|
PatientId: fmt.Sprintf("%d", orderPrescription.PatientId),
|
|
FamilyId: fmt.Sprintf("%d", orderPrescription.FamilyId),
|
|
PharmacistId: fmt.Sprintf("%d", orderPrescription.PharmacistId),
|
|
PrescriptionStatus: orderPrescription.PrescriptionStatus,
|
|
PharmacistAuditStatus: orderPrescription.PharmacistAuditStatus,
|
|
PharmacistVerifyTime: orderPrescription.PharmacistVerifyTime,
|
|
PharmacistFailReason: orderPrescription.PharmacistFailReason,
|
|
PlatformAuditStatus: orderPrescription.PlatformAuditStatus,
|
|
PlatformFailTime: orderPrescription.PlatformFailTime,
|
|
PlatformFailReason: orderPrescription.PlatformFailReason,
|
|
IsAutoPharVerify: orderPrescription.IsAutoPharVerify,
|
|
DoctorCreatedTime: orderPrescription.DoctorCreatedTime,
|
|
ExpiredTime: orderPrescription.ExpiredTime,
|
|
IsDelete: orderPrescription.IsDelete,
|
|
PrescriptionCode: orderPrescription.PrescriptionCode,
|
|
DoctorName: orderPrescription.DoctorName,
|
|
PatientName: orderPrescription.PatientName,
|
|
PatientSex: orderPrescription.PatientSex,
|
|
PatientAge: orderPrescription.PatientAge,
|
|
DoctorAdvice: orderPrescription.DoctorAdvice,
|
|
CreatedAt: orderPrescription.CreatedAt,
|
|
UpdatedAt: orderPrescription.UpdatedAt,
|
|
}
|
|
return u, nil
|
|
}
|
|
|
|
// GetOrderPrescription 处方详情
|
|
func (r *OrderPrescriptionService) GetOrderPrescription(OrderPrescriptionId int64) (getOrderPrescriptionResponse *orderPrescriptionResponse.GetOrderPrescription, err error) {
|
|
orderPrescriptionDao := dao.OrderPrescriptionDao{}
|
|
orderPrescription, err := orderPrescriptionDao.GetById(OrderPrescriptionId)
|
|
if orderPrescription == nil {
|
|
return nil, errors.New("处方错误")
|
|
}
|
|
|
|
// 获取处方关联疾病数据
|
|
orderPrescriptionIcds, err := r.GetOrderPrescriptionIcdByOrderPrescriptionId(OrderPrescriptionId)
|
|
if err != nil {
|
|
return nil, errors.New(err.Error())
|
|
}
|
|
|
|
fmt.Println(orderPrescriptionIcds)
|
|
// 获取问诊病例
|
|
orderInquiryService := OrderInquiryService{}
|
|
orderInquiryCase, err := orderInquiryService.GetOrderInquiryCaseByOrderInquiryId(orderPrescription.OrderInquiryId)
|
|
if err != nil {
|
|
return nil, errors.New(err.Error())
|
|
}
|
|
fmt.Println(orderInquiryCase)
|
|
|
|
// 获取处方关联问诊数据
|
|
orderInquiry, err := orderInquiryService.GetOrderInquiryById(orderPrescription.OrderInquiryId)
|
|
if err != nil {
|
|
return nil, errors.New(err.Error())
|
|
}
|
|
fmt.Println(orderInquiry)
|
|
|
|
// 获取处方商品数据
|
|
orderPrescriptionProducts, err := r.GetOrderPrescriptionProductByOrderPrescriptionId(OrderPrescriptionId)
|
|
if err != nil {
|
|
return nil, errors.New(err.Error())
|
|
}
|
|
fmt.Println(orderPrescriptionProducts)
|
|
|
|
// 获取医生数据
|
|
userDoctorService := UserDoctorService{}
|
|
userDoctor, err := userDoctorService.GetUserDoctorById(orderPrescription.DoctorId)
|
|
if err != nil {
|
|
return nil, errors.New(err.Error())
|
|
}
|
|
fmt.Println(userDoctor)
|
|
|
|
// 获取药师数据
|
|
|
|
result := &orderPrescriptionResponse.GetOrderPrescription{
|
|
|
|
CreatedAt: model.LocalTime{},
|
|
UpdatedAt: model.LocalTime{},
|
|
}
|
|
|
|
return result, nil
|
|
}
|
|
|
|
// GetOrderPrescriptionIcdByOrderPrescriptionId 获取处方关联疾病数据-处方id
|
|
func (r *OrderPrescriptionService) GetOrderPrescriptionIcdByOrderPrescriptionId(OrderPrescriptionId int64) (res *orderPrescriptionIcdResponse.OrderPrescriptionIcd, err error) {
|
|
orderPrescriptionIcdDao := dao.OrderPrescriptionIcdDao{}
|
|
orderPrescriptionIcd, err := orderPrescriptionIcdDao.GetOrderPrescriptionIcdById(OrderPrescriptionId)
|
|
if orderPrescriptionIcd == nil {
|
|
return nil, errors.New("处方病例错误")
|
|
}
|
|
|
|
result := &orderPrescriptionIcdResponse.OrderPrescriptionIcd{
|
|
PrescriptionIcdId: fmt.Sprintf("%d", orderPrescriptionIcd.PrescriptionIcdId),
|
|
OrderPrescriptionId: fmt.Sprintf("%d", orderPrescriptionIcd.OrderPrescriptionId),
|
|
IcdId: fmt.Sprintf("%d", orderPrescriptionIcd.IcdId),
|
|
IcdName: orderPrescriptionIcd.IcdName,
|
|
IcdCode: orderPrescriptionIcd.IcdCode,
|
|
CreatedAt: orderPrescriptionIcd.CreatedAt,
|
|
UpdatedAt: orderPrescriptionIcd.UpdatedAt,
|
|
}
|
|
|
|
return result, nil
|
|
}
|
|
|
|
// GetOrderPrescriptionProductByOrderPrescriptionId 获取处方关联商品数据-处方id
|
|
func (r *OrderPrescriptionService) GetOrderPrescriptionProductByOrderPrescriptionId(orderPrescriptionId int64) (res []*orderPrescriptionProductResponse.OrderPrescriptionProduct, err error) {
|
|
orderPrescriptionProductDao := dao.OrderPrescriptionProductDao{}
|
|
orderPrescriptionProducts, err := orderPrescriptionProductDao.GetOrderPrescriptionProductListByOrderPrescriptionId(orderPrescriptionId)
|
|
if err != nil {
|
|
return nil, errors.New("数据错误,无处方药品数据")
|
|
}
|
|
|
|
if len(orderPrescriptionProducts) == 0 {
|
|
return nil, errors.New("数据错误,无处方药品数据")
|
|
}
|
|
|
|
// 处理返回值
|
|
items := make([]*orderPrescriptionProductResponse.OrderPrescriptionProduct, len(orderPrescriptionProducts))
|
|
|
|
if len(orderPrescriptionProducts) > 0 {
|
|
for i, v := range orderPrescriptionProducts {
|
|
// 将原始结构体转换为新结构体
|
|
item := &orderPrescriptionProductResponse.OrderPrescriptionProduct{
|
|
PrescriptionProductId: fmt.Sprintf("%d", v.OrderPrescriptionId),
|
|
OrderPrescriptionId: fmt.Sprintf("%d", v.OrderPrescriptionId),
|
|
ProductId: fmt.Sprintf("%d", v.ProductId),
|
|
UseStatus: v.UseStatus,
|
|
PrescriptionProductNum: v.PrescriptionProductNum,
|
|
ProductName: v.ProductName,
|
|
ProductSpec: v.ProductSpec,
|
|
LicenseNumber: v.LicenseNumber,
|
|
Manufacturer: v.Manufacturer,
|
|
SingleUnit: v.SingleUnit,
|
|
SingleUse: v.SingleUse,
|
|
PackagingUnit: v.PackagingUnit,
|
|
FrequencyUse: v.FrequencyUse,
|
|
AvailableDays: v.AvailableDays,
|
|
CreatedAt: v.CreatedAt,
|
|
UpdatedAt: v.UpdatedAt,
|
|
}
|
|
|
|
// 将转换后的结构体添加到新切片中
|
|
items[i] = item
|
|
}
|
|
}
|
|
return items, nil
|
|
}
|